@syncause/debug-daemon 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1506 -452
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -10740,7 +10740,7 @@ var require_winston = __commonJS({
|
|
|
10740
10740
|
var require_object_hash = __commonJS({
|
|
10741
10741
|
"node_modules/object-hash/index.js"(exports2, module2) {
|
|
10742
10742
|
"use strict";
|
|
10743
|
-
var
|
|
10743
|
+
var crypto6 = require("crypto");
|
|
10744
10744
|
exports2 = module2.exports = objectHash;
|
|
10745
10745
|
function objectHash(object, options) {
|
|
10746
10746
|
options = applyDefaults(object, options);
|
|
@@ -10758,7 +10758,7 @@ var require_object_hash = __commonJS({
|
|
|
10758
10758
|
exports2.keysMD5 = function(object) {
|
|
10759
10759
|
return objectHash(object, { algorithm: "md5", encoding: "hex", excludeValues: true });
|
|
10760
10760
|
};
|
|
10761
|
-
var hashes =
|
|
10761
|
+
var hashes = crypto6.getHashes ? crypto6.getHashes().slice() : ["sha1", "md5"];
|
|
10762
10762
|
hashes.push("passthrough");
|
|
10763
10763
|
var encodings = ["buffer", "hex", "binary", "base64"];
|
|
10764
10764
|
function applyDefaults(object, sourceOptions) {
|
|
@@ -10804,7 +10804,7 @@ var require_object_hash = __commonJS({
|
|
|
10804
10804
|
function hash(object, options) {
|
|
10805
10805
|
var hashingStream;
|
|
10806
10806
|
if (options.algorithm !== "passthrough") {
|
|
10807
|
-
hashingStream =
|
|
10807
|
+
hashingStream = crypto6.createHash(options.algorithm);
|
|
10808
10808
|
} else {
|
|
10809
10809
|
hashingStream = new PassThrough();
|
|
10810
10810
|
}
|
|
@@ -15121,7 +15121,7 @@ var require_FileStreamRotator = __commonJS({
|
|
|
15121
15121
|
var fs5 = require("fs");
|
|
15122
15122
|
var path6 = require("path");
|
|
15123
15123
|
var moment = require_moment();
|
|
15124
|
-
var
|
|
15124
|
+
var crypto6 = require("crypto");
|
|
15125
15125
|
var EventEmitter = require("events");
|
|
15126
15126
|
var FileStreamRotator = {};
|
|
15127
15127
|
module2.exports = FileStreamRotator;
|
|
@@ -15250,7 +15250,7 @@ var require_FileStreamRotator = __commonJS({
|
|
|
15250
15250
|
}
|
|
15251
15251
|
};
|
|
15252
15252
|
function removeFile(file, verbose) {
|
|
15253
|
-
if (file.hash ===
|
|
15253
|
+
if (file.hash === crypto6.createHash(file.hashType).update(file.name + "LOG_FILE" + file.date).digest("hex")) {
|
|
15254
15254
|
try {
|
|
15255
15255
|
if (fs5.existsSync(file.name)) {
|
|
15256
15256
|
fs5.unlinkSync(file.name);
|
|
@@ -15316,7 +15316,7 @@ var require_FileStreamRotator = __commonJS({
|
|
|
15316
15316
|
audit.files.push({
|
|
15317
15317
|
date: time,
|
|
15318
15318
|
name: logfile,
|
|
15319
|
-
hash:
|
|
15319
|
+
hash: crypto6.createHash(audit.hashType).update(logfile + "LOG_FILE" + time).digest("hex")
|
|
15320
15320
|
});
|
|
15321
15321
|
if (audit.keep.days) {
|
|
15322
15322
|
var oldestDate = moment().subtract(audit.keep.amount, "days").valueOf();
|
|
@@ -15993,6 +15993,733 @@ var require_p_limit = __commonJS({
|
|
|
15993
15993
|
}
|
|
15994
15994
|
});
|
|
15995
15995
|
|
|
15996
|
+
// node_modules/node-machine-id/dist/index.js
|
|
15997
|
+
var require_dist = __commonJS({
|
|
15998
|
+
"node_modules/node-machine-id/dist/index.js"(exports2, module2) {
|
|
15999
|
+
!(function(t, n) {
|
|
16000
|
+
"object" == typeof exports2 && "object" == typeof module2 ? module2.exports = n(require("child_process"), require("crypto")) : "function" == typeof define && define.amd ? define(["child_process", "crypto"], n) : "object" == typeof exports2 ? exports2["electron-machine-id"] = n(require("child_process"), require("crypto")) : t["electron-machine-id"] = n(t.child_process, t.crypto);
|
|
16001
|
+
})(exports2, function(t, n) {
|
|
16002
|
+
return (function(t2) {
|
|
16003
|
+
function n2(e) {
|
|
16004
|
+
if (r[e]) return r[e].exports;
|
|
16005
|
+
var o = r[e] = { exports: {}, id: e, loaded: false };
|
|
16006
|
+
return t2[e].call(o.exports, o, o.exports, n2), o.loaded = true, o.exports;
|
|
16007
|
+
}
|
|
16008
|
+
var r = {};
|
|
16009
|
+
return n2.m = t2, n2.c = r, n2.p = "", n2(0);
|
|
16010
|
+
})([function(t2, n2, r) {
|
|
16011
|
+
t2.exports = r(34);
|
|
16012
|
+
}, function(t2, n2, r) {
|
|
16013
|
+
var e = r(29)("wks"), o = r(33), i = r(2).Symbol, c = "function" == typeof i, u = t2.exports = function(t3) {
|
|
16014
|
+
return e[t3] || (e[t3] = c && i[t3] || (c ? i : o)("Symbol." + t3));
|
|
16015
|
+
};
|
|
16016
|
+
u.store = e;
|
|
16017
|
+
}, function(t2, n2) {
|
|
16018
|
+
var r = t2.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
|
|
16019
|
+
"number" == typeof __g && (__g = r);
|
|
16020
|
+
}, function(t2, n2, r) {
|
|
16021
|
+
var e = r(9);
|
|
16022
|
+
t2.exports = function(t3) {
|
|
16023
|
+
if (!e(t3)) throw TypeError(t3 + " is not an object!");
|
|
16024
|
+
return t3;
|
|
16025
|
+
};
|
|
16026
|
+
}, function(t2, n2, r) {
|
|
16027
|
+
t2.exports = !r(24)(function() {
|
|
16028
|
+
return 7 != Object.defineProperty({}, "a", { get: function() {
|
|
16029
|
+
return 7;
|
|
16030
|
+
} }).a;
|
|
16031
|
+
});
|
|
16032
|
+
}, function(t2, n2, r) {
|
|
16033
|
+
var e = r(12), o = r(17);
|
|
16034
|
+
t2.exports = r(4) ? function(t3, n3, r2) {
|
|
16035
|
+
return e.f(t3, n3, o(1, r2));
|
|
16036
|
+
} : function(t3, n3, r2) {
|
|
16037
|
+
return t3[n3] = r2, t3;
|
|
16038
|
+
};
|
|
16039
|
+
}, function(t2, n2) {
|
|
16040
|
+
var r = t2.exports = { version: "2.4.0" };
|
|
16041
|
+
"number" == typeof __e && (__e = r);
|
|
16042
|
+
}, function(t2, n2, r) {
|
|
16043
|
+
var e = r(14);
|
|
16044
|
+
t2.exports = function(t3, n3, r2) {
|
|
16045
|
+
if (e(t3), void 0 === n3) return t3;
|
|
16046
|
+
switch (r2) {
|
|
16047
|
+
case 1:
|
|
16048
|
+
return function(r3) {
|
|
16049
|
+
return t3.call(n3, r3);
|
|
16050
|
+
};
|
|
16051
|
+
case 2:
|
|
16052
|
+
return function(r3, e2) {
|
|
16053
|
+
return t3.call(n3, r3, e2);
|
|
16054
|
+
};
|
|
16055
|
+
case 3:
|
|
16056
|
+
return function(r3, e2, o) {
|
|
16057
|
+
return t3.call(n3, r3, e2, o);
|
|
16058
|
+
};
|
|
16059
|
+
}
|
|
16060
|
+
return function() {
|
|
16061
|
+
return t3.apply(n3, arguments);
|
|
16062
|
+
};
|
|
16063
|
+
};
|
|
16064
|
+
}, function(t2, n2) {
|
|
16065
|
+
var r = {}.hasOwnProperty;
|
|
16066
|
+
t2.exports = function(t3, n3) {
|
|
16067
|
+
return r.call(t3, n3);
|
|
16068
|
+
};
|
|
16069
|
+
}, function(t2, n2) {
|
|
16070
|
+
t2.exports = function(t3) {
|
|
16071
|
+
return "object" == typeof t3 ? null !== t3 : "function" == typeof t3;
|
|
16072
|
+
};
|
|
16073
|
+
}, function(t2, n2) {
|
|
16074
|
+
t2.exports = {};
|
|
16075
|
+
}, function(t2, n2) {
|
|
16076
|
+
var r = {}.toString;
|
|
16077
|
+
t2.exports = function(t3) {
|
|
16078
|
+
return r.call(t3).slice(8, -1);
|
|
16079
|
+
};
|
|
16080
|
+
}, function(t2, n2, r) {
|
|
16081
|
+
var e = r(3), o = r(26), i = r(32), c = Object.defineProperty;
|
|
16082
|
+
n2.f = r(4) ? Object.defineProperty : function(t3, n3, r2) {
|
|
16083
|
+
if (e(t3), n3 = i(n3, true), e(r2), o) try {
|
|
16084
|
+
return c(t3, n3, r2);
|
|
16085
|
+
} catch (t4) {
|
|
16086
|
+
}
|
|
16087
|
+
if ("get" in r2 || "set" in r2) throw TypeError("Accessors not supported!");
|
|
16088
|
+
return "value" in r2 && (t3[n3] = r2.value), t3;
|
|
16089
|
+
};
|
|
16090
|
+
}, function(t2, n2, r) {
|
|
16091
|
+
var e = r(42), o = r(15);
|
|
16092
|
+
t2.exports = function(t3) {
|
|
16093
|
+
return e(o(t3));
|
|
16094
|
+
};
|
|
16095
|
+
}, function(t2, n2) {
|
|
16096
|
+
t2.exports = function(t3) {
|
|
16097
|
+
if ("function" != typeof t3) throw TypeError(t3 + " is not a function!");
|
|
16098
|
+
return t3;
|
|
16099
|
+
};
|
|
16100
|
+
}, function(t2, n2) {
|
|
16101
|
+
t2.exports = function(t3) {
|
|
16102
|
+
if (void 0 == t3) throw TypeError("Can't call method on " + t3);
|
|
16103
|
+
return t3;
|
|
16104
|
+
};
|
|
16105
|
+
}, function(t2, n2, r) {
|
|
16106
|
+
var e = r(9), o = r(2).document, i = e(o) && e(o.createElement);
|
|
16107
|
+
t2.exports = function(t3) {
|
|
16108
|
+
return i ? o.createElement(t3) : {};
|
|
16109
|
+
};
|
|
16110
|
+
}, function(t2, n2) {
|
|
16111
|
+
t2.exports = function(t3, n3) {
|
|
16112
|
+
return { enumerable: !(1 & t3), configurable: !(2 & t3), writable: !(4 & t3), value: n3 };
|
|
16113
|
+
};
|
|
16114
|
+
}, function(t2, n2, r) {
|
|
16115
|
+
var e = r(12).f, o = r(8), i = r(1)("toStringTag");
|
|
16116
|
+
t2.exports = function(t3, n3, r2) {
|
|
16117
|
+
t3 && !o(t3 = r2 ? t3 : t3.prototype, i) && e(t3, i, { configurable: true, value: n3 });
|
|
16118
|
+
};
|
|
16119
|
+
}, function(t2, n2, r) {
|
|
16120
|
+
var e = r(29)("keys"), o = r(33);
|
|
16121
|
+
t2.exports = function(t3) {
|
|
16122
|
+
return e[t3] || (e[t3] = o(t3));
|
|
16123
|
+
};
|
|
16124
|
+
}, function(t2, n2) {
|
|
16125
|
+
var r = Math.ceil, e = Math.floor;
|
|
16126
|
+
t2.exports = function(t3) {
|
|
16127
|
+
return isNaN(t3 = +t3) ? 0 : (t3 > 0 ? e : r)(t3);
|
|
16128
|
+
};
|
|
16129
|
+
}, function(t2, n2, r) {
|
|
16130
|
+
var e = r(11), o = r(1)("toStringTag"), i = "Arguments" == e(/* @__PURE__ */ (function() {
|
|
16131
|
+
return arguments;
|
|
16132
|
+
})()), c = function(t3, n3) {
|
|
16133
|
+
try {
|
|
16134
|
+
return t3[n3];
|
|
16135
|
+
} catch (t4) {
|
|
16136
|
+
}
|
|
16137
|
+
};
|
|
16138
|
+
t2.exports = function(t3) {
|
|
16139
|
+
var n3, r2, u;
|
|
16140
|
+
return void 0 === t3 ? "Undefined" : null === t3 ? "Null" : "string" == typeof (r2 = c(n3 = Object(t3), o)) ? r2 : i ? e(n3) : "Object" == (u = e(n3)) && "function" == typeof n3.callee ? "Arguments" : u;
|
|
16141
|
+
};
|
|
16142
|
+
}, function(t2, n2) {
|
|
16143
|
+
t2.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",");
|
|
16144
|
+
}, function(t2, n2, r) {
|
|
16145
|
+
var e = r(2), o = r(6), i = r(7), c = r(5), u = "prototype", s = function(t3, n3, r2) {
|
|
16146
|
+
var f, a, p, l = t3 & s.F, v = t3 & s.G, h = t3 & s.S, d = t3 & s.P, y = t3 & s.B, _ = t3 & s.W, x = v ? o : o[n3] || (o[n3] = {}), m = x[u], w = v ? e : h ? e[n3] : (e[n3] || {})[u];
|
|
16147
|
+
v && (r2 = n3);
|
|
16148
|
+
for (f in r2) a = !l && w && void 0 !== w[f], a && f in x || (p = a ? w[f] : r2[f], x[f] = v && "function" != typeof w[f] ? r2[f] : y && a ? i(p, e) : _ && w[f] == p ? (function(t4) {
|
|
16149
|
+
var n4 = function(n5, r3, e2) {
|
|
16150
|
+
if (this instanceof t4) {
|
|
16151
|
+
switch (arguments.length) {
|
|
16152
|
+
case 0:
|
|
16153
|
+
return new t4();
|
|
16154
|
+
case 1:
|
|
16155
|
+
return new t4(n5);
|
|
16156
|
+
case 2:
|
|
16157
|
+
return new t4(n5, r3);
|
|
16158
|
+
}
|
|
16159
|
+
return new t4(n5, r3, e2);
|
|
16160
|
+
}
|
|
16161
|
+
return t4.apply(this, arguments);
|
|
16162
|
+
};
|
|
16163
|
+
return n4[u] = t4[u], n4;
|
|
16164
|
+
})(p) : d && "function" == typeof p ? i(Function.call, p) : p, d && ((x.virtual || (x.virtual = {}))[f] = p, t3 & s.R && m && !m[f] && c(m, f, p)));
|
|
16165
|
+
};
|
|
16166
|
+
s.F = 1, s.G = 2, s.S = 4, s.P = 8, s.B = 16, s.W = 32, s.U = 64, s.R = 128, t2.exports = s;
|
|
16167
|
+
}, function(t2, n2) {
|
|
16168
|
+
t2.exports = function(t3) {
|
|
16169
|
+
try {
|
|
16170
|
+
return !!t3();
|
|
16171
|
+
} catch (t4) {
|
|
16172
|
+
return true;
|
|
16173
|
+
}
|
|
16174
|
+
};
|
|
16175
|
+
}, function(t2, n2, r) {
|
|
16176
|
+
t2.exports = r(2).document && document.documentElement;
|
|
16177
|
+
}, function(t2, n2, r) {
|
|
16178
|
+
t2.exports = !r(4) && !r(24)(function() {
|
|
16179
|
+
return 7 != Object.defineProperty(r(16)("div"), "a", { get: function() {
|
|
16180
|
+
return 7;
|
|
16181
|
+
} }).a;
|
|
16182
|
+
});
|
|
16183
|
+
}, function(t2, n2, r) {
|
|
16184
|
+
"use strict";
|
|
16185
|
+
var e = r(28), o = r(23), i = r(57), c = r(5), u = r(8), s = r(10), f = r(45), a = r(18), p = r(52), l = r(1)("iterator"), v = !([].keys && "next" in [].keys()), h = "@@iterator", d = "keys", y = "values", _ = function() {
|
|
16186
|
+
return this;
|
|
16187
|
+
};
|
|
16188
|
+
t2.exports = function(t3, n3, r2, x, m, w, g) {
|
|
16189
|
+
f(r2, n3, x);
|
|
16190
|
+
var b, O, j, S = function(t4) {
|
|
16191
|
+
if (!v && t4 in T) return T[t4];
|
|
16192
|
+
switch (t4) {
|
|
16193
|
+
case d:
|
|
16194
|
+
return function() {
|
|
16195
|
+
return new r2(this, t4);
|
|
16196
|
+
};
|
|
16197
|
+
case y:
|
|
16198
|
+
return function() {
|
|
16199
|
+
return new r2(this, t4);
|
|
16200
|
+
};
|
|
16201
|
+
}
|
|
16202
|
+
return function() {
|
|
16203
|
+
return new r2(this, t4);
|
|
16204
|
+
};
|
|
16205
|
+
}, E = n3 + " Iterator", P = m == y, M = false, T = t3.prototype, A = T[l] || T[h] || m && T[m], k = A || S(m), C = m ? P ? S("entries") : k : void 0, I = "Array" == n3 ? T.entries || A : A;
|
|
16206
|
+
if (I && (j = p(I.call(new t3())), j !== Object.prototype && (a(j, E, true), e || u(j, l) || c(j, l, _))), P && A && A.name !== y && (M = true, k = function() {
|
|
16207
|
+
return A.call(this);
|
|
16208
|
+
}), e && !g || !v && !M && T[l] || c(T, l, k), s[n3] = k, s[E] = _, m) if (b = { values: P ? k : S(y), keys: w ? k : S(d), entries: C }, g) for (O in b) O in T || i(T, O, b[O]);
|
|
16209
|
+
else o(o.P + o.F * (v || M), n3, b);
|
|
16210
|
+
return b;
|
|
16211
|
+
};
|
|
16212
|
+
}, function(t2, n2) {
|
|
16213
|
+
t2.exports = true;
|
|
16214
|
+
}, function(t2, n2, r) {
|
|
16215
|
+
var e = r(2), o = "__core-js_shared__", i = e[o] || (e[o] = {});
|
|
16216
|
+
t2.exports = function(t3) {
|
|
16217
|
+
return i[t3] || (i[t3] = {});
|
|
16218
|
+
};
|
|
16219
|
+
}, function(t2, n2, r) {
|
|
16220
|
+
var e, o, i, c = r(7), u = r(41), s = r(25), f = r(16), a = r(2), p = a.process, l = a.setImmediate, v = a.clearImmediate, h = a.MessageChannel, d = 0, y = {}, _ = "onreadystatechange", x = function() {
|
|
16221
|
+
var t3 = +this;
|
|
16222
|
+
if (y.hasOwnProperty(t3)) {
|
|
16223
|
+
var n3 = y[t3];
|
|
16224
|
+
delete y[t3], n3();
|
|
16225
|
+
}
|
|
16226
|
+
}, m = function(t3) {
|
|
16227
|
+
x.call(t3.data);
|
|
16228
|
+
};
|
|
16229
|
+
l && v || (l = function(t3) {
|
|
16230
|
+
for (var n3 = [], r2 = 1; arguments.length > r2; ) n3.push(arguments[r2++]);
|
|
16231
|
+
return y[++d] = function() {
|
|
16232
|
+
u("function" == typeof t3 ? t3 : Function(t3), n3);
|
|
16233
|
+
}, e(d), d;
|
|
16234
|
+
}, v = function(t3) {
|
|
16235
|
+
delete y[t3];
|
|
16236
|
+
}, "process" == r(11)(p) ? e = function(t3) {
|
|
16237
|
+
p.nextTick(c(x, t3, 1));
|
|
16238
|
+
} : h ? (o = new h(), i = o.port2, o.port1.onmessage = m, e = c(i.postMessage, i, 1)) : a.addEventListener && "function" == typeof postMessage && !a.importScripts ? (e = function(t3) {
|
|
16239
|
+
a.postMessage(t3 + "", "*");
|
|
16240
|
+
}, a.addEventListener("message", m, false)) : e = _ in f("script") ? function(t3) {
|
|
16241
|
+
s.appendChild(f("script"))[_] = function() {
|
|
16242
|
+
s.removeChild(this), x.call(t3);
|
|
16243
|
+
};
|
|
16244
|
+
} : function(t3) {
|
|
16245
|
+
setTimeout(c(x, t3, 1), 0);
|
|
16246
|
+
}), t2.exports = { set: l, clear: v };
|
|
16247
|
+
}, function(t2, n2, r) {
|
|
16248
|
+
var e = r(20), o = Math.min;
|
|
16249
|
+
t2.exports = function(t3) {
|
|
16250
|
+
return t3 > 0 ? o(e(t3), 9007199254740991) : 0;
|
|
16251
|
+
};
|
|
16252
|
+
}, function(t2, n2, r) {
|
|
16253
|
+
var e = r(9);
|
|
16254
|
+
t2.exports = function(t3, n3) {
|
|
16255
|
+
if (!e(t3)) return t3;
|
|
16256
|
+
var r2, o;
|
|
16257
|
+
if (n3 && "function" == typeof (r2 = t3.toString) && !e(o = r2.call(t3))) return o;
|
|
16258
|
+
if ("function" == typeof (r2 = t3.valueOf) && !e(o = r2.call(t3))) return o;
|
|
16259
|
+
if (!n3 && "function" == typeof (r2 = t3.toString) && !e(o = r2.call(t3))) return o;
|
|
16260
|
+
throw TypeError("Can't convert object to primitive value");
|
|
16261
|
+
};
|
|
16262
|
+
}, function(t2, n2) {
|
|
16263
|
+
var r = 0, e = Math.random();
|
|
16264
|
+
t2.exports = function(t3) {
|
|
16265
|
+
return "Symbol(".concat(void 0 === t3 ? "" : t3, ")_", (++r + e).toString(36));
|
|
16266
|
+
};
|
|
16267
|
+
}, function(t2, n2, r) {
|
|
16268
|
+
"use strict";
|
|
16269
|
+
function e(t3) {
|
|
16270
|
+
return t3 && t3.__esModule ? t3 : { default: t3 };
|
|
16271
|
+
}
|
|
16272
|
+
function o() {
|
|
16273
|
+
return "win32" !== process.platform ? "" : "ia32" === process.arch && process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432") ? "mixed" : "native";
|
|
16274
|
+
}
|
|
16275
|
+
function i(t3) {
|
|
16276
|
+
return (0, l.createHash)("sha256").update(t3).digest("hex");
|
|
16277
|
+
}
|
|
16278
|
+
function c(t3) {
|
|
16279
|
+
switch (h) {
|
|
16280
|
+
case "darwin":
|
|
16281
|
+
return t3.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi, "").toLowerCase();
|
|
16282
|
+
case "win32":
|
|
16283
|
+
return t3.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi, "").toLowerCase();
|
|
16284
|
+
case "linux":
|
|
16285
|
+
return t3.toString().replace(/\r+|\n+|\s+/gi, "").toLowerCase();
|
|
16286
|
+
case "freebsd":
|
|
16287
|
+
return t3.toString().replace(/\r+|\n+|\s+/gi, "").toLowerCase();
|
|
16288
|
+
default:
|
|
16289
|
+
throw new Error("Unsupported platform: " + process.platform);
|
|
16290
|
+
}
|
|
16291
|
+
}
|
|
16292
|
+
function u(t3) {
|
|
16293
|
+
var n3 = c((0, p.execSync)(y[h]).toString());
|
|
16294
|
+
return t3 ? n3 : i(n3);
|
|
16295
|
+
}
|
|
16296
|
+
function s(t3) {
|
|
16297
|
+
return new a.default(function(n3, r2) {
|
|
16298
|
+
return (0, p.exec)(y[h], {}, function(e2, o2, u2) {
|
|
16299
|
+
if (e2) return r2(new Error("Error while obtaining machine id: " + e2.stack));
|
|
16300
|
+
var s2 = c(o2.toString());
|
|
16301
|
+
return n3(t3 ? s2 : i(s2));
|
|
16302
|
+
});
|
|
16303
|
+
});
|
|
16304
|
+
}
|
|
16305
|
+
Object.defineProperty(n2, "__esModule", { value: true });
|
|
16306
|
+
var f = r(35), a = e(f);
|
|
16307
|
+
n2.machineIdSync = u, n2.machineId = s;
|
|
16308
|
+
var p = r(70), l = r(71), v = process, h = v.platform, d = { native: "%windir%\\System32", mixed: "%windir%\\sysnative\\cmd.exe /c %windir%\\System32" }, y = { darwin: "ioreg -rd1 -c IOPlatformExpertDevice", win32: d[o()] + "\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid", linux: "( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :", freebsd: "kenv -q smbios.system.uuid || sysctl -n kern.hostuuid" };
|
|
16309
|
+
}, function(t2, n2, r) {
|
|
16310
|
+
t2.exports = { default: r(36), __esModule: true };
|
|
16311
|
+
}, function(t2, n2, r) {
|
|
16312
|
+
r(66), r(68), r(69), r(67), t2.exports = r(6).Promise;
|
|
16313
|
+
}, function(t2, n2) {
|
|
16314
|
+
t2.exports = function() {
|
|
16315
|
+
};
|
|
16316
|
+
}, function(t2, n2) {
|
|
16317
|
+
t2.exports = function(t3, n3, r, e) {
|
|
16318
|
+
if (!(t3 instanceof n3) || void 0 !== e && e in t3) throw TypeError(r + ": incorrect invocation!");
|
|
16319
|
+
return t3;
|
|
16320
|
+
};
|
|
16321
|
+
}, function(t2, n2, r) {
|
|
16322
|
+
var e = r(13), o = r(31), i = r(62);
|
|
16323
|
+
t2.exports = function(t3) {
|
|
16324
|
+
return function(n3, r2, c) {
|
|
16325
|
+
var u, s = e(n3), f = o(s.length), a = i(c, f);
|
|
16326
|
+
if (t3 && r2 != r2) {
|
|
16327
|
+
for (; f > a; ) if (u = s[a++], u != u) return true;
|
|
16328
|
+
} else for (; f > a; a++) if ((t3 || a in s) && s[a] === r2) return t3 || a || 0;
|
|
16329
|
+
return !t3 && -1;
|
|
16330
|
+
};
|
|
16331
|
+
};
|
|
16332
|
+
}, function(t2, n2, r) {
|
|
16333
|
+
var e = r(7), o = r(44), i = r(43), c = r(3), u = r(31), s = r(64), f = {}, a = {}, n2 = t2.exports = function(t3, n3, r2, p, l) {
|
|
16334
|
+
var v, h, d, y, _ = l ? function() {
|
|
16335
|
+
return t3;
|
|
16336
|
+
} : s(t3), x = e(r2, p, n3 ? 2 : 1), m = 0;
|
|
16337
|
+
if ("function" != typeof _) throw TypeError(t3 + " is not iterable!");
|
|
16338
|
+
if (i(_)) {
|
|
16339
|
+
for (v = u(t3.length); v > m; m++) if (y = n3 ? x(c(h = t3[m])[0], h[1]) : x(t3[m]), y === f || y === a) return y;
|
|
16340
|
+
} else for (d = _.call(t3); !(h = d.next()).done; ) if (y = o(d, x, h.value, n3), y === f || y === a) return y;
|
|
16341
|
+
};
|
|
16342
|
+
n2.BREAK = f, n2.RETURN = a;
|
|
16343
|
+
}, function(t2, n2) {
|
|
16344
|
+
t2.exports = function(t3, n3, r) {
|
|
16345
|
+
var e = void 0 === r;
|
|
16346
|
+
switch (n3.length) {
|
|
16347
|
+
case 0:
|
|
16348
|
+
return e ? t3() : t3.call(r);
|
|
16349
|
+
case 1:
|
|
16350
|
+
return e ? t3(n3[0]) : t3.call(r, n3[0]);
|
|
16351
|
+
case 2:
|
|
16352
|
+
return e ? t3(n3[0], n3[1]) : t3.call(r, n3[0], n3[1]);
|
|
16353
|
+
case 3:
|
|
16354
|
+
return e ? t3(n3[0], n3[1], n3[2]) : t3.call(r, n3[0], n3[1], n3[2]);
|
|
16355
|
+
case 4:
|
|
16356
|
+
return e ? t3(n3[0], n3[1], n3[2], n3[3]) : t3.call(r, n3[0], n3[1], n3[2], n3[3]);
|
|
16357
|
+
}
|
|
16358
|
+
return t3.apply(r, n3);
|
|
16359
|
+
};
|
|
16360
|
+
}, function(t2, n2, r) {
|
|
16361
|
+
var e = r(11);
|
|
16362
|
+
t2.exports = Object("z").propertyIsEnumerable(0) ? Object : function(t3) {
|
|
16363
|
+
return "String" == e(t3) ? t3.split("") : Object(t3);
|
|
16364
|
+
};
|
|
16365
|
+
}, function(t2, n2, r) {
|
|
16366
|
+
var e = r(10), o = r(1)("iterator"), i = Array.prototype;
|
|
16367
|
+
t2.exports = function(t3) {
|
|
16368
|
+
return void 0 !== t3 && (e.Array === t3 || i[o] === t3);
|
|
16369
|
+
};
|
|
16370
|
+
}, function(t2, n2, r) {
|
|
16371
|
+
var e = r(3);
|
|
16372
|
+
t2.exports = function(t3, n3, r2, o) {
|
|
16373
|
+
try {
|
|
16374
|
+
return o ? n3(e(r2)[0], r2[1]) : n3(r2);
|
|
16375
|
+
} catch (n4) {
|
|
16376
|
+
var i = t3.return;
|
|
16377
|
+
throw void 0 !== i && e(i.call(t3)), n4;
|
|
16378
|
+
}
|
|
16379
|
+
};
|
|
16380
|
+
}, function(t2, n2, r) {
|
|
16381
|
+
"use strict";
|
|
16382
|
+
var e = r(49), o = r(17), i = r(18), c = {};
|
|
16383
|
+
r(5)(c, r(1)("iterator"), function() {
|
|
16384
|
+
return this;
|
|
16385
|
+
}), t2.exports = function(t3, n3, r2) {
|
|
16386
|
+
t3.prototype = e(c, { next: o(1, r2) }), i(t3, n3 + " Iterator");
|
|
16387
|
+
};
|
|
16388
|
+
}, function(t2, n2, r) {
|
|
16389
|
+
var e = r(1)("iterator"), o = false;
|
|
16390
|
+
try {
|
|
16391
|
+
var i = [7][e]();
|
|
16392
|
+
i.return = function() {
|
|
16393
|
+
o = true;
|
|
16394
|
+
}, Array.from(i, function() {
|
|
16395
|
+
throw 2;
|
|
16396
|
+
});
|
|
16397
|
+
} catch (t3) {
|
|
16398
|
+
}
|
|
16399
|
+
t2.exports = function(t3, n3) {
|
|
16400
|
+
if (!n3 && !o) return false;
|
|
16401
|
+
var r2 = false;
|
|
16402
|
+
try {
|
|
16403
|
+
var i2 = [7], c = i2[e]();
|
|
16404
|
+
c.next = function() {
|
|
16405
|
+
return { done: r2 = true };
|
|
16406
|
+
}, i2[e] = function() {
|
|
16407
|
+
return c;
|
|
16408
|
+
}, t3(i2);
|
|
16409
|
+
} catch (t4) {
|
|
16410
|
+
}
|
|
16411
|
+
return r2;
|
|
16412
|
+
};
|
|
16413
|
+
}, function(t2, n2) {
|
|
16414
|
+
t2.exports = function(t3, n3) {
|
|
16415
|
+
return { value: n3, done: !!t3 };
|
|
16416
|
+
};
|
|
16417
|
+
}, function(t2, n2, r) {
|
|
16418
|
+
var e = r(2), o = r(30).set, i = e.MutationObserver || e.WebKitMutationObserver, c = e.process, u = e.Promise, s = "process" == r(11)(c);
|
|
16419
|
+
t2.exports = function() {
|
|
16420
|
+
var t3, n3, r2, f = function() {
|
|
16421
|
+
var e2, o2;
|
|
16422
|
+
for (s && (e2 = c.domain) && e2.exit(); t3; ) {
|
|
16423
|
+
o2 = t3.fn, t3 = t3.next;
|
|
16424
|
+
try {
|
|
16425
|
+
o2();
|
|
16426
|
+
} catch (e3) {
|
|
16427
|
+
throw t3 ? r2() : n3 = void 0, e3;
|
|
16428
|
+
}
|
|
16429
|
+
}
|
|
16430
|
+
n3 = void 0, e2 && e2.enter();
|
|
16431
|
+
};
|
|
16432
|
+
if (s) r2 = function() {
|
|
16433
|
+
c.nextTick(f);
|
|
16434
|
+
};
|
|
16435
|
+
else if (i) {
|
|
16436
|
+
var a = true, p = document.createTextNode("");
|
|
16437
|
+
new i(f).observe(p, { characterData: true }), r2 = function() {
|
|
16438
|
+
p.data = a = !a;
|
|
16439
|
+
};
|
|
16440
|
+
} else if (u && u.resolve) {
|
|
16441
|
+
var l = u.resolve();
|
|
16442
|
+
r2 = function() {
|
|
16443
|
+
l.then(f);
|
|
16444
|
+
};
|
|
16445
|
+
} else r2 = function() {
|
|
16446
|
+
o.call(e, f);
|
|
16447
|
+
};
|
|
16448
|
+
return function(e2) {
|
|
16449
|
+
var o2 = { fn: e2, next: void 0 };
|
|
16450
|
+
n3 && (n3.next = o2), t3 || (t3 = o2, r2()), n3 = o2;
|
|
16451
|
+
};
|
|
16452
|
+
};
|
|
16453
|
+
}, function(t2, n2, r) {
|
|
16454
|
+
var e = r(3), o = r(50), i = r(22), c = r(19)("IE_PROTO"), u = function() {
|
|
16455
|
+
}, s = "prototype", f = function() {
|
|
16456
|
+
var t3, n3 = r(16)("iframe"), e2 = i.length, o2 = ">";
|
|
16457
|
+
for (n3.style.display = "none", r(25).appendChild(n3), n3.src = "javascript:", t3 = n3.contentWindow.document, t3.open(), t3.write("<script>document.F=Object</script" + o2), t3.close(), f = t3.F; e2--; ) delete f[s][i[e2]];
|
|
16458
|
+
return f();
|
|
16459
|
+
};
|
|
16460
|
+
t2.exports = Object.create || function(t3, n3) {
|
|
16461
|
+
var r2;
|
|
16462
|
+
return null !== t3 ? (u[s] = e(t3), r2 = new u(), u[s] = null, r2[c] = t3) : r2 = f(), void 0 === n3 ? r2 : o(r2, n3);
|
|
16463
|
+
};
|
|
16464
|
+
}, function(t2, n2, r) {
|
|
16465
|
+
var e = r(12), o = r(3), i = r(54);
|
|
16466
|
+
t2.exports = r(4) ? Object.defineProperties : function(t3, n3) {
|
|
16467
|
+
o(t3);
|
|
16468
|
+
for (var r2, c = i(n3), u = c.length, s = 0; u > s; ) e.f(t3, r2 = c[s++], n3[r2]);
|
|
16469
|
+
return t3;
|
|
16470
|
+
};
|
|
16471
|
+
}, function(t2, n2, r) {
|
|
16472
|
+
var e = r(55), o = r(17), i = r(13), c = r(32), u = r(8), s = r(26), f = Object.getOwnPropertyDescriptor;
|
|
16473
|
+
n2.f = r(4) ? f : function(t3, n3) {
|
|
16474
|
+
if (t3 = i(t3), n3 = c(n3, true), s) try {
|
|
16475
|
+
return f(t3, n3);
|
|
16476
|
+
} catch (t4) {
|
|
16477
|
+
}
|
|
16478
|
+
if (u(t3, n3)) return o(!e.f.call(t3, n3), t3[n3]);
|
|
16479
|
+
};
|
|
16480
|
+
}, function(t2, n2, r) {
|
|
16481
|
+
var e = r(8), o = r(63), i = r(19)("IE_PROTO"), c = Object.prototype;
|
|
16482
|
+
t2.exports = Object.getPrototypeOf || function(t3) {
|
|
16483
|
+
return t3 = o(t3), e(t3, i) ? t3[i] : "function" == typeof t3.constructor && t3 instanceof t3.constructor ? t3.constructor.prototype : t3 instanceof Object ? c : null;
|
|
16484
|
+
};
|
|
16485
|
+
}, function(t2, n2, r) {
|
|
16486
|
+
var e = r(8), o = r(13), i = r(39)(false), c = r(19)("IE_PROTO");
|
|
16487
|
+
t2.exports = function(t3, n3) {
|
|
16488
|
+
var r2, u = o(t3), s = 0, f = [];
|
|
16489
|
+
for (r2 in u) r2 != c && e(u, r2) && f.push(r2);
|
|
16490
|
+
for (; n3.length > s; ) e(u, r2 = n3[s++]) && (~i(f, r2) || f.push(r2));
|
|
16491
|
+
return f;
|
|
16492
|
+
};
|
|
16493
|
+
}, function(t2, n2, r) {
|
|
16494
|
+
var e = r(53), o = r(22);
|
|
16495
|
+
t2.exports = Object.keys || function(t3) {
|
|
16496
|
+
return e(t3, o);
|
|
16497
|
+
};
|
|
16498
|
+
}, function(t2, n2) {
|
|
16499
|
+
n2.f = {}.propertyIsEnumerable;
|
|
16500
|
+
}, function(t2, n2, r) {
|
|
16501
|
+
var e = r(5);
|
|
16502
|
+
t2.exports = function(t3, n3, r2) {
|
|
16503
|
+
for (var o in n3) r2 && t3[o] ? t3[o] = n3[o] : e(t3, o, n3[o]);
|
|
16504
|
+
return t3;
|
|
16505
|
+
};
|
|
16506
|
+
}, function(t2, n2, r) {
|
|
16507
|
+
t2.exports = r(5);
|
|
16508
|
+
}, function(t2, n2, r) {
|
|
16509
|
+
var e = r(9), o = r(3), i = function(t3, n3) {
|
|
16510
|
+
if (o(t3), !e(n3) && null !== n3) throw TypeError(n3 + ": can't set as prototype!");
|
|
16511
|
+
};
|
|
16512
|
+
t2.exports = { set: Object.setPrototypeOf || ("__proto__" in {} ? (function(t3, n3, e2) {
|
|
16513
|
+
try {
|
|
16514
|
+
e2 = r(7)(Function.call, r(51).f(Object.prototype, "__proto__").set, 2), e2(t3, []), n3 = !(t3 instanceof Array);
|
|
16515
|
+
} catch (t4) {
|
|
16516
|
+
n3 = true;
|
|
16517
|
+
}
|
|
16518
|
+
return function(t4, r2) {
|
|
16519
|
+
return i(t4, r2), n3 ? t4.__proto__ = r2 : e2(t4, r2), t4;
|
|
16520
|
+
};
|
|
16521
|
+
})({}, false) : void 0), check: i };
|
|
16522
|
+
}, function(t2, n2, r) {
|
|
16523
|
+
"use strict";
|
|
16524
|
+
var e = r(2), o = r(6), i = r(12), c = r(4), u = r(1)("species");
|
|
16525
|
+
t2.exports = function(t3) {
|
|
16526
|
+
var n3 = "function" == typeof o[t3] ? o[t3] : e[t3];
|
|
16527
|
+
c && n3 && !n3[u] && i.f(n3, u, { configurable: true, get: function() {
|
|
16528
|
+
return this;
|
|
16529
|
+
} });
|
|
16530
|
+
};
|
|
16531
|
+
}, function(t2, n2, r) {
|
|
16532
|
+
var e = r(3), o = r(14), i = r(1)("species");
|
|
16533
|
+
t2.exports = function(t3, n3) {
|
|
16534
|
+
var r2, c = e(t3).constructor;
|
|
16535
|
+
return void 0 === c || void 0 == (r2 = e(c)[i]) ? n3 : o(r2);
|
|
16536
|
+
};
|
|
16537
|
+
}, function(t2, n2, r) {
|
|
16538
|
+
var e = r(20), o = r(15);
|
|
16539
|
+
t2.exports = function(t3) {
|
|
16540
|
+
return function(n3, r2) {
|
|
16541
|
+
var i, c, u = String(o(n3)), s = e(r2), f = u.length;
|
|
16542
|
+
return s < 0 || s >= f ? t3 ? "" : void 0 : (i = u.charCodeAt(s), i < 55296 || i > 56319 || s + 1 === f || (c = u.charCodeAt(s + 1)) < 56320 || c > 57343 ? t3 ? u.charAt(s) : i : t3 ? u.slice(s, s + 2) : (i - 55296 << 10) + (c - 56320) + 65536);
|
|
16543
|
+
};
|
|
16544
|
+
};
|
|
16545
|
+
}, function(t2, n2, r) {
|
|
16546
|
+
var e = r(20), o = Math.max, i = Math.min;
|
|
16547
|
+
t2.exports = function(t3, n3) {
|
|
16548
|
+
return t3 = e(t3), t3 < 0 ? o(t3 + n3, 0) : i(t3, n3);
|
|
16549
|
+
};
|
|
16550
|
+
}, function(t2, n2, r) {
|
|
16551
|
+
var e = r(15);
|
|
16552
|
+
t2.exports = function(t3) {
|
|
16553
|
+
return Object(e(t3));
|
|
16554
|
+
};
|
|
16555
|
+
}, function(t2, n2, r) {
|
|
16556
|
+
var e = r(21), o = r(1)("iterator"), i = r(10);
|
|
16557
|
+
t2.exports = r(6).getIteratorMethod = function(t3) {
|
|
16558
|
+
if (void 0 != t3) return t3[o] || t3["@@iterator"] || i[e(t3)];
|
|
16559
|
+
};
|
|
16560
|
+
}, function(t2, n2, r) {
|
|
16561
|
+
"use strict";
|
|
16562
|
+
var e = r(37), o = r(47), i = r(10), c = r(13);
|
|
16563
|
+
t2.exports = r(27)(Array, "Array", function(t3, n3) {
|
|
16564
|
+
this._t = c(t3), this._i = 0, this._k = n3;
|
|
16565
|
+
}, function() {
|
|
16566
|
+
var t3 = this._t, n3 = this._k, r2 = this._i++;
|
|
16567
|
+
return !t3 || r2 >= t3.length ? (this._t = void 0, o(1)) : "keys" == n3 ? o(0, r2) : "values" == n3 ? o(0, t3[r2]) : o(0, [r2, t3[r2]]);
|
|
16568
|
+
}, "values"), i.Arguments = i.Array, e("keys"), e("values"), e("entries");
|
|
16569
|
+
}, function(t2, n2) {
|
|
16570
|
+
}, function(t2, n2, r) {
|
|
16571
|
+
"use strict";
|
|
16572
|
+
var e, o, i, c = r(28), u = r(2), s = r(7), f = r(21), a = r(23), p = r(9), l = (r(3), r(14)), v = r(38), h = r(40), d = (r(58).set, r(60)), y = r(30).set, _ = r(48)(), x = "Promise", m = u.TypeError, w = u.process, g = u[x], w = u.process, b = "process" == f(w), O = function() {
|
|
16573
|
+
}, j = !!(function() {
|
|
16574
|
+
try {
|
|
16575
|
+
var t3 = g.resolve(1), n3 = (t3.constructor = {})[r(1)("species")] = function(t4) {
|
|
16576
|
+
t4(O, O);
|
|
16577
|
+
};
|
|
16578
|
+
return (b || "function" == typeof PromiseRejectionEvent) && t3.then(O) instanceof n3;
|
|
16579
|
+
} catch (t4) {
|
|
16580
|
+
}
|
|
16581
|
+
})(), S = function(t3, n3) {
|
|
16582
|
+
return t3 === n3 || t3 === g && n3 === i;
|
|
16583
|
+
}, E = function(t3) {
|
|
16584
|
+
var n3;
|
|
16585
|
+
return !(!p(t3) || "function" != typeof (n3 = t3.then)) && n3;
|
|
16586
|
+
}, P = function(t3) {
|
|
16587
|
+
return S(g, t3) ? new M(t3) : new o(t3);
|
|
16588
|
+
}, M = o = function(t3) {
|
|
16589
|
+
var n3, r2;
|
|
16590
|
+
this.promise = new t3(function(t4, e2) {
|
|
16591
|
+
if (void 0 !== n3 || void 0 !== r2) throw m("Bad Promise constructor");
|
|
16592
|
+
n3 = t4, r2 = e2;
|
|
16593
|
+
}), this.resolve = l(n3), this.reject = l(r2);
|
|
16594
|
+
}, T = function(t3) {
|
|
16595
|
+
try {
|
|
16596
|
+
t3();
|
|
16597
|
+
} catch (t4) {
|
|
16598
|
+
return { error: t4 };
|
|
16599
|
+
}
|
|
16600
|
+
}, A = function(t3, n3) {
|
|
16601
|
+
if (!t3._n) {
|
|
16602
|
+
t3._n = true;
|
|
16603
|
+
var r2 = t3._c;
|
|
16604
|
+
_(function() {
|
|
16605
|
+
for (var e2 = t3._v, o2 = 1 == t3._s, i2 = 0, c2 = function(n4) {
|
|
16606
|
+
var r3, i3, c3 = o2 ? n4.ok : n4.fail, u2 = n4.resolve, s2 = n4.reject, f2 = n4.domain;
|
|
16607
|
+
try {
|
|
16608
|
+
c3 ? (o2 || (2 == t3._h && I(t3), t3._h = 1), c3 === true ? r3 = e2 : (f2 && f2.enter(), r3 = c3(e2), f2 && f2.exit()), r3 === n4.promise ? s2(m("Promise-chain cycle")) : (i3 = E(r3)) ? i3.call(r3, u2, s2) : u2(r3)) : s2(e2);
|
|
16609
|
+
} catch (t4) {
|
|
16610
|
+
s2(t4);
|
|
16611
|
+
}
|
|
16612
|
+
}; r2.length > i2; ) c2(r2[i2++]);
|
|
16613
|
+
t3._c = [], t3._n = false, n3 && !t3._h && k(t3);
|
|
16614
|
+
});
|
|
16615
|
+
}
|
|
16616
|
+
}, k = function(t3) {
|
|
16617
|
+
y.call(u, function() {
|
|
16618
|
+
var n3, r2, e2, o2 = t3._v;
|
|
16619
|
+
if (C(t3) && (n3 = T(function() {
|
|
16620
|
+
b ? w.emit("unhandledRejection", o2, t3) : (r2 = u.onunhandledrejection) ? r2({ promise: t3, reason: o2 }) : (e2 = u.console) && e2.error && e2.error("Unhandled promise rejection", o2);
|
|
16621
|
+
}), t3._h = b || C(t3) ? 2 : 1), t3._a = void 0, n3) throw n3.error;
|
|
16622
|
+
});
|
|
16623
|
+
}, C = function(t3) {
|
|
16624
|
+
if (1 == t3._h) return false;
|
|
16625
|
+
for (var n3, r2 = t3._a || t3._c, e2 = 0; r2.length > e2; ) if (n3 = r2[e2++], n3.fail || !C(n3.promise)) return false;
|
|
16626
|
+
return true;
|
|
16627
|
+
}, I = function(t3) {
|
|
16628
|
+
y.call(u, function() {
|
|
16629
|
+
var n3;
|
|
16630
|
+
b ? w.emit("rejectionHandled", t3) : (n3 = u.onrejectionhandled) && n3({ promise: t3, reason: t3._v });
|
|
16631
|
+
});
|
|
16632
|
+
}, R = function(t3) {
|
|
16633
|
+
var n3 = this;
|
|
16634
|
+
n3._d || (n3._d = true, n3 = n3._w || n3, n3._v = t3, n3._s = 2, n3._a || (n3._a = n3._c.slice()), A(n3, true));
|
|
16635
|
+
}, F = function(t3) {
|
|
16636
|
+
var n3, r2 = this;
|
|
16637
|
+
if (!r2._d) {
|
|
16638
|
+
r2._d = true, r2 = r2._w || r2;
|
|
16639
|
+
try {
|
|
16640
|
+
if (r2 === t3) throw m("Promise can't be resolved itself");
|
|
16641
|
+
(n3 = E(t3)) ? _(function() {
|
|
16642
|
+
var e2 = { _w: r2, _d: false };
|
|
16643
|
+
try {
|
|
16644
|
+
n3.call(t3, s(F, e2, 1), s(R, e2, 1));
|
|
16645
|
+
} catch (t4) {
|
|
16646
|
+
R.call(e2, t4);
|
|
16647
|
+
}
|
|
16648
|
+
}) : (r2._v = t3, r2._s = 1, A(r2, false));
|
|
16649
|
+
} catch (t4) {
|
|
16650
|
+
R.call({ _w: r2, _d: false }, t4);
|
|
16651
|
+
}
|
|
16652
|
+
}
|
|
16653
|
+
};
|
|
16654
|
+
j || (g = function(t3) {
|
|
16655
|
+
v(this, g, x, "_h"), l(t3), e.call(this);
|
|
16656
|
+
try {
|
|
16657
|
+
t3(s(F, this, 1), s(R, this, 1));
|
|
16658
|
+
} catch (t4) {
|
|
16659
|
+
R.call(this, t4);
|
|
16660
|
+
}
|
|
16661
|
+
}, e = function(t3) {
|
|
16662
|
+
this._c = [], this._a = void 0, this._s = 0, this._d = false, this._v = void 0, this._h = 0, this._n = false;
|
|
16663
|
+
}, e.prototype = r(56)(g.prototype, { then: function(t3, n3) {
|
|
16664
|
+
var r2 = P(d(this, g));
|
|
16665
|
+
return r2.ok = "function" != typeof t3 || t3, r2.fail = "function" == typeof n3 && n3, r2.domain = b ? w.domain : void 0, this._c.push(r2), this._a && this._a.push(r2), this._s && A(this, false), r2.promise;
|
|
16666
|
+
}, catch: function(t3) {
|
|
16667
|
+
return this.then(void 0, t3);
|
|
16668
|
+
} }), M = function() {
|
|
16669
|
+
var t3 = new e();
|
|
16670
|
+
this.promise = t3, this.resolve = s(F, t3, 1), this.reject = s(R, t3, 1);
|
|
16671
|
+
}), a(a.G + a.W + a.F * !j, { Promise: g }), r(18)(g, x), r(59)(x), i = r(6)[x], a(a.S + a.F * !j, x, { reject: function(t3) {
|
|
16672
|
+
var n3 = P(this), r2 = n3.reject;
|
|
16673
|
+
return r2(t3), n3.promise;
|
|
16674
|
+
} }), a(a.S + a.F * (c || !j), x, { resolve: function(t3) {
|
|
16675
|
+
if (t3 instanceof g && S(t3.constructor, this)) return t3;
|
|
16676
|
+
var n3 = P(this), r2 = n3.resolve;
|
|
16677
|
+
return r2(t3), n3.promise;
|
|
16678
|
+
} }), a(a.S + a.F * !(j && r(46)(function(t3) {
|
|
16679
|
+
g.all(t3).catch(O);
|
|
16680
|
+
})), x, { all: function(t3) {
|
|
16681
|
+
var n3 = this, r2 = P(n3), e2 = r2.resolve, o2 = r2.reject, i2 = T(function() {
|
|
16682
|
+
var r3 = [], i3 = 0, c2 = 1;
|
|
16683
|
+
h(t3, false, function(t4) {
|
|
16684
|
+
var u2 = i3++, s2 = false;
|
|
16685
|
+
r3.push(void 0), c2++, n3.resolve(t4).then(function(t5) {
|
|
16686
|
+
s2 || (s2 = true, r3[u2] = t5, --c2 || e2(r3));
|
|
16687
|
+
}, o2);
|
|
16688
|
+
}), --c2 || e2(r3);
|
|
16689
|
+
});
|
|
16690
|
+
return i2 && o2(i2.error), r2.promise;
|
|
16691
|
+
}, race: function(t3) {
|
|
16692
|
+
var n3 = this, r2 = P(n3), e2 = r2.reject, o2 = T(function() {
|
|
16693
|
+
h(t3, false, function(t4) {
|
|
16694
|
+
n3.resolve(t4).then(r2.resolve, e2);
|
|
16695
|
+
});
|
|
16696
|
+
});
|
|
16697
|
+
return o2 && e2(o2.error), r2.promise;
|
|
16698
|
+
} });
|
|
16699
|
+
}, function(t2, n2, r) {
|
|
16700
|
+
"use strict";
|
|
16701
|
+
var e = r(61)(true);
|
|
16702
|
+
r(27)(String, "String", function(t3) {
|
|
16703
|
+
this._t = String(t3), this._i = 0;
|
|
16704
|
+
}, function() {
|
|
16705
|
+
var t3, n3 = this._t, r2 = this._i;
|
|
16706
|
+
return r2 >= n3.length ? { value: void 0, done: true } : (t3 = e(n3, r2), this._i += t3.length, { value: t3, done: false });
|
|
16707
|
+
});
|
|
16708
|
+
}, function(t2, n2, r) {
|
|
16709
|
+
r(65);
|
|
16710
|
+
for (var e = r(2), o = r(5), i = r(10), c = r(1)("toStringTag"), u = ["NodeList", "DOMTokenList", "MediaList", "StyleSheetList", "CSSRuleList"], s = 0; s < 5; s++) {
|
|
16711
|
+
var f = u[s], a = e[f], p = a && a.prototype;
|
|
16712
|
+
p && !p[c] && o(p, c, f), i[f] = i.Array;
|
|
16713
|
+
}
|
|
16714
|
+
}, function(t2, n2) {
|
|
16715
|
+
t2.exports = require("child_process");
|
|
16716
|
+
}, function(t2, n2) {
|
|
16717
|
+
t2.exports = require("crypto");
|
|
16718
|
+
}]);
|
|
16719
|
+
});
|
|
16720
|
+
}
|
|
16721
|
+
});
|
|
16722
|
+
|
|
15996
16723
|
// src/transport/server/local.ts
|
|
15997
16724
|
var fs3 = __toESM(require("fs"));
|
|
15998
16725
|
|
|
@@ -18652,109 +19379,360 @@ var getRequestListener = (fetchCallback, options = {}) => {
|
|
|
18652
19379
|
|
|
18653
19380
|
// src/transport/server/hono-server.ts
|
|
18654
19381
|
var import_node_http = require("node:http");
|
|
18655
|
-
|
|
18656
|
-
|
|
18657
|
-
|
|
18658
|
-
|
|
18659
|
-
|
|
19382
|
+
|
|
19383
|
+
// src/config/index.ts
|
|
19384
|
+
function getArgValue(key) {
|
|
19385
|
+
const keys = [key, key.toLowerCase()];
|
|
19386
|
+
for (const k of keys) {
|
|
19387
|
+
const prefix = `--${k}=`;
|
|
19388
|
+
const arg = process.argv.find((a) => a.startsWith(prefix));
|
|
19389
|
+
if (arg) return arg.slice(prefix.length);
|
|
19390
|
+
const index = process.argv.indexOf(`--${k}`);
|
|
19391
|
+
if (index !== -1 && index + 1 < process.argv.length && !process.argv[index + 1].startsWith("--")) {
|
|
19392
|
+
return process.argv[index + 1];
|
|
19393
|
+
}
|
|
18660
19394
|
}
|
|
18661
|
-
|
|
18662
|
-
|
|
18663
|
-
|
|
18664
|
-
|
|
18665
|
-
|
|
18666
|
-
|
|
18667
|
-
|
|
18668
|
-
|
|
18669
|
-
|
|
18670
|
-
|
|
18671
|
-
|
|
18672
|
-
try {
|
|
18673
|
-
body = await c.req.json();
|
|
18674
|
-
} catch (e) {
|
|
18675
|
-
return c.json({
|
|
18676
|
-
jsonrpc: "2.0",
|
|
18677
|
-
id: null,
|
|
18678
|
-
error: { code: -32700 /* PARSE_ERROR */, message: "Parse error" }
|
|
18679
|
-
}, 400);
|
|
18680
|
-
}
|
|
18681
|
-
Logger.getInstance().debug("Executing RPC handler", {
|
|
18682
|
-
apiKey,
|
|
18683
|
-
method: body?.method,
|
|
18684
|
-
requestId: body?.id,
|
|
18685
|
-
params: body?.params
|
|
18686
|
-
});
|
|
18687
|
-
if (!apiKey) {
|
|
18688
|
-
Logger.getInstance().debug("Unauthorized: Invalid API Key");
|
|
18689
|
-
return c.json({
|
|
18690
|
-
jsonrpc: "2.0",
|
|
18691
|
-
id: body?.id || null,
|
|
18692
|
-
error: {
|
|
18693
|
-
code: -32001 /* UNAUTHORIZED */,
|
|
18694
|
-
message: "Unauthorized: Invalid API Key"
|
|
18695
|
-
}
|
|
18696
|
-
}, 401);
|
|
18697
|
-
}
|
|
18698
|
-
if (!body || body.jsonrpc !== "2.0" || !body.method || !body.id) {
|
|
18699
|
-
Logger.getInstance().debug("Invalid Request: Not a standard JSON-RPC 2.0");
|
|
18700
|
-
return c.json({
|
|
18701
|
-
jsonrpc: "2.0",
|
|
18702
|
-
id: body?.id || null,
|
|
18703
|
-
error: { code: -32600 /* INVALID_REQUEST */, message: "Invalid Request: Not a standard JSON-RPC 2.0" }
|
|
18704
|
-
}, 400);
|
|
18705
|
-
}
|
|
18706
|
-
const handler = this.handlers.get(body.method);
|
|
18707
|
-
if (!handler) {
|
|
18708
|
-
return c.json({
|
|
18709
|
-
jsonrpc: "2.0",
|
|
18710
|
-
id: body.id,
|
|
18711
|
-
error: { code: -32601 /* METHOD_NOT_FOUND */, message: `Method not found: ${body.method}` }
|
|
18712
|
-
});
|
|
18713
|
-
}
|
|
18714
|
-
try {
|
|
18715
|
-
const result = await handler(body.params, apiKey);
|
|
18716
|
-
Logger.getInstance().debug("RPC handler executed successfully", {
|
|
18717
|
-
method: body.method,
|
|
18718
|
-
requestId: body.id
|
|
18719
|
-
});
|
|
18720
|
-
return c.json({
|
|
18721
|
-
jsonrpc: "2.0",
|
|
18722
|
-
id: body.id,
|
|
18723
|
-
result
|
|
18724
|
-
});
|
|
18725
|
-
} catch (err) {
|
|
18726
|
-
Logger.getInstance().error(`RPC Handler Error for ${body.method}:`, err);
|
|
18727
|
-
return c.json({
|
|
18728
|
-
jsonrpc: "2.0",
|
|
18729
|
-
id: body.id,
|
|
18730
|
-
error: { code: -32603 /* INTERNAL_ERROR */, message: err.message || "Internal error" }
|
|
18731
|
-
});
|
|
18732
|
-
}
|
|
18733
|
-
});
|
|
19395
|
+
return void 0;
|
|
19396
|
+
}
|
|
19397
|
+
function hasArgFlag(key) {
|
|
19398
|
+
const keys = [key, key.toLowerCase()];
|
|
19399
|
+
return keys.some((k) => process.argv.includes(`--${k}`));
|
|
19400
|
+
}
|
|
19401
|
+
function parseConfigInt(key, defaultValue) {
|
|
19402
|
+
const argValue = getArgValue(key);
|
|
19403
|
+
if (argValue) {
|
|
19404
|
+
const parsed2 = parseInt(argValue, 10);
|
|
19405
|
+
if (!isNaN(parsed2)) return parsed2;
|
|
18734
19406
|
}
|
|
18735
|
-
|
|
18736
|
-
|
|
18737
|
-
|
|
19407
|
+
const value = process.env[key];
|
|
19408
|
+
if (!value) return defaultValue;
|
|
19409
|
+
const parsed = parseInt(value, 10);
|
|
19410
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
19411
|
+
}
|
|
19412
|
+
function parseConfigBool(key, defaultValue) {
|
|
19413
|
+
const argValue = getArgValue(key);
|
|
19414
|
+
if (argValue !== void 0) {
|
|
19415
|
+
const parsed2 = argValue.toLowerCase();
|
|
19416
|
+
return parsed2 === "true" || parsed2 === "1";
|
|
18738
19417
|
}
|
|
18739
|
-
|
|
18740
|
-
|
|
18741
|
-
|
|
18742
|
-
|
|
18743
|
-
|
|
18744
|
-
|
|
18745
|
-
|
|
18746
|
-
|
|
18747
|
-
|
|
18748
|
-
|
|
18749
|
-
|
|
18750
|
-
|
|
18751
|
-
|
|
18752
|
-
|
|
18753
|
-
|
|
18754
|
-
|
|
18755
|
-
|
|
18756
|
-
|
|
18757
|
-
|
|
19418
|
+
if (hasArgFlag(key)) {
|
|
19419
|
+
return true;
|
|
19420
|
+
}
|
|
19421
|
+
const value = process.env[key];
|
|
19422
|
+
if (!value) return defaultValue;
|
|
19423
|
+
const parsed = value.toLowerCase();
|
|
19424
|
+
return parsed === "true" || parsed === "1";
|
|
19425
|
+
}
|
|
19426
|
+
function parseConfigString(key, defaultValue) {
|
|
19427
|
+
return getArgValue(key) || process.env[key] || defaultValue;
|
|
19428
|
+
}
|
|
19429
|
+
function buildServerConfig() {
|
|
19430
|
+
return {
|
|
19431
|
+
mode: parseConfigString("MODE", "local").toLowerCase(),
|
|
19432
|
+
autoShutdownMinutes: parseConfigInt("AUTO_SHUTDOWN_MINUTES", 5),
|
|
19433
|
+
httpPort: parseConfigInt("HTTP_PORT", 8080)
|
|
19434
|
+
};
|
|
19435
|
+
}
|
|
19436
|
+
function buildLogConfig() {
|
|
19437
|
+
return {
|
|
19438
|
+
logToConsole: parseConfigBool("LOG_TO_CONSOLE", false),
|
|
19439
|
+
logLevel: parseConfigString("LOG_LEVEL", "info").toLowerCase()
|
|
19440
|
+
};
|
|
19441
|
+
}
|
|
19442
|
+
function buildStorageConfig() {
|
|
19443
|
+
return {
|
|
19444
|
+
persistInterval: parseConfigInt("STORAGE_PERSIST_INTERVAL", 5e3),
|
|
19445
|
+
// 5 second
|
|
19446
|
+
maxTracesPerApp: parseConfigInt("STORAGE_MAX_TRACES_PER_APP", 250)
|
|
19447
|
+
};
|
|
19448
|
+
}
|
|
19449
|
+
function buildServiceConfig() {
|
|
19450
|
+
return {
|
|
19451
|
+
proxyUrl: parseConfigString("SERVICE_PROXY_URL", "https://api.syn-cause.com/codeproxy"),
|
|
19452
|
+
pollingInterval: parseConfigInt("SERVICE_POLLING_INTERVAL", 1e4),
|
|
19453
|
+
// 10 second
|
|
19454
|
+
bindingCheckInterval: parseConfigInt("SERVICE_BINDING_CHECK_INTERVAL", 6e4)
|
|
19455
|
+
// 1 minute
|
|
19456
|
+
};
|
|
19457
|
+
}
|
|
19458
|
+
var cachedConfig = null;
|
|
19459
|
+
function getConfig() {
|
|
19460
|
+
if (!cachedConfig) {
|
|
19461
|
+
cachedConfig = {
|
|
19462
|
+
server: buildServerConfig(),
|
|
19463
|
+
log: buildLogConfig(),
|
|
19464
|
+
storage: buildStorageConfig(),
|
|
19465
|
+
service: buildServiceConfig()
|
|
19466
|
+
};
|
|
19467
|
+
}
|
|
19468
|
+
return cachedConfig;
|
|
19469
|
+
}
|
|
19470
|
+
|
|
19471
|
+
// src/core/api/ProxyApi.ts
|
|
19472
|
+
var AuthInput = class _AuthInput {
|
|
19473
|
+
apiKey;
|
|
19474
|
+
jwtToken;
|
|
19475
|
+
constructor(info) {
|
|
19476
|
+
this.apiKey = info.apiKey;
|
|
19477
|
+
this.jwtToken = info.jwtToken;
|
|
19478
|
+
}
|
|
19479
|
+
hasApiKey() {
|
|
19480
|
+
return !!this.apiKey;
|
|
19481
|
+
}
|
|
19482
|
+
hasJwtToken() {
|
|
19483
|
+
return !!this.jwtToken;
|
|
19484
|
+
}
|
|
19485
|
+
static fromApiKey(apiKey) {
|
|
19486
|
+
return new _AuthInput({ apiKey });
|
|
19487
|
+
}
|
|
19488
|
+
static fromJwtToken(jwtToken) {
|
|
19489
|
+
return new _AuthInput({ jwtToken });
|
|
19490
|
+
}
|
|
19491
|
+
getHeaders() {
|
|
19492
|
+
const headers = {};
|
|
19493
|
+
if (this.apiKey) {
|
|
19494
|
+
headers["X-API-Key"] = this.apiKey;
|
|
19495
|
+
}
|
|
19496
|
+
if (this.jwtToken) {
|
|
19497
|
+
headers["Authorization"] = `Bearer ${this.jwtToken}`;
|
|
19498
|
+
}
|
|
19499
|
+
return headers;
|
|
19500
|
+
}
|
|
19501
|
+
/**
|
|
19502
|
+
* Get the key to use for LLM API calls.
|
|
19503
|
+
* Returns apiKey if available, otherwise returns jwtToken.
|
|
19504
|
+
*/
|
|
19505
|
+
getLlmKey() {
|
|
19506
|
+
return this.apiKey || this.jwtToken || "";
|
|
19507
|
+
}
|
|
19508
|
+
};
|
|
19509
|
+
var ProxyAuth = class {
|
|
19510
|
+
auth;
|
|
19511
|
+
constructor(auth) {
|
|
19512
|
+
this.auth = auth;
|
|
19513
|
+
}
|
|
19514
|
+
update(auth) {
|
|
19515
|
+
const oldAuth = this.auth;
|
|
19516
|
+
if (oldAuth.hasApiKey() && auth.hasJwtToken() && !auth.hasApiKey()) {
|
|
19517
|
+
return false;
|
|
19518
|
+
}
|
|
19519
|
+
if (oldAuth.getLlmKey() === auth.getLlmKey()) {
|
|
19520
|
+
return false;
|
|
19521
|
+
}
|
|
19522
|
+
this.auth = auth;
|
|
19523
|
+
return true;
|
|
19524
|
+
}
|
|
19525
|
+
get() {
|
|
19526
|
+
return this.auth;
|
|
19527
|
+
}
|
|
19528
|
+
getHeaders() {
|
|
19529
|
+
return this.auth.getHeaders();
|
|
19530
|
+
}
|
|
19531
|
+
getLlmKey() {
|
|
19532
|
+
return this.auth.getLlmKey();
|
|
19533
|
+
}
|
|
19534
|
+
};
|
|
19535
|
+
var ProxyApi = class {
|
|
19536
|
+
proxyUrl;
|
|
19537
|
+
constructor(proxyUrl) {
|
|
19538
|
+
this.proxyUrl = proxyUrl;
|
|
19539
|
+
}
|
|
19540
|
+
async fetchAppList(auth) {
|
|
19541
|
+
try {
|
|
19542
|
+
const response = await fetch(`${this.proxyUrl}/api/v1/apps`, {
|
|
19543
|
+
headers: auth.getHeaders()
|
|
19544
|
+
});
|
|
19545
|
+
if (!response.ok) {
|
|
19546
|
+
Logger.getInstance().warn(`Failed to fetch app list: ${response.status} ${response.statusText}`);
|
|
19547
|
+
return null;
|
|
19548
|
+
}
|
|
19549
|
+
const data = await response.json();
|
|
19550
|
+
if (data.code !== 200 || !data.data) {
|
|
19551
|
+
Logger.getInstance().warn("Failed to fetch app list or no data returned");
|
|
19552
|
+
return null;
|
|
19553
|
+
}
|
|
19554
|
+
return Array.isArray(data.data) ? data.data : [];
|
|
19555
|
+
} catch (error) {
|
|
19556
|
+
Logger.getInstance().error("Error fetching app list:", error);
|
|
19557
|
+
return null;
|
|
19558
|
+
}
|
|
19559
|
+
}
|
|
19560
|
+
async checkDeviceBinding(deviceId) {
|
|
19561
|
+
try {
|
|
19562
|
+
const response = await fetch(`${this.proxyUrl}/api/v1/devices/checkBind?deviceId=${deviceId}`);
|
|
19563
|
+
if (!response.ok) {
|
|
19564
|
+
Logger.getInstance().warn(`Failed to check device binding: ${response.status} ${response.statusText}`);
|
|
19565
|
+
return null;
|
|
19566
|
+
}
|
|
19567
|
+
const result = await response.json();
|
|
19568
|
+
if (result.success && result.data) {
|
|
19569
|
+
if (typeof result.data.isBound === "string") {
|
|
19570
|
+
result.data.isBound = result.data.isBound === "true";
|
|
19571
|
+
}
|
|
19572
|
+
return result.data;
|
|
19573
|
+
}
|
|
19574
|
+
return null;
|
|
19575
|
+
} catch (error) {
|
|
19576
|
+
Logger.getInstance().error("Error checking device binding:", error);
|
|
19577
|
+
return null;
|
|
19578
|
+
}
|
|
19579
|
+
}
|
|
19580
|
+
async pollRuntimeFacts(appId, auth) {
|
|
19581
|
+
try {
|
|
19582
|
+
const response = await fetch(`${this.proxyUrl}/api/v1/traces/${appId}`, {
|
|
19583
|
+
headers: auth.getHeaders()
|
|
19584
|
+
});
|
|
19585
|
+
if (!response.ok) {
|
|
19586
|
+
Logger.getInstance().warn(`Failed to fetch RuntimeFacts for ${appId}: ${response.status} ${response.statusText}`);
|
|
19587
|
+
return [];
|
|
19588
|
+
}
|
|
19589
|
+
const data = await response.json();
|
|
19590
|
+
if (!Array.isArray(data.data)) {
|
|
19591
|
+
Logger.getInstance().warn("Fetched data is not an array:", data.data);
|
|
19592
|
+
return [];
|
|
19593
|
+
}
|
|
19594
|
+
return data.data;
|
|
19595
|
+
} catch (error) {
|
|
19596
|
+
Logger.getInstance().error(`Error polling traces for ${appId}:`, error);
|
|
19597
|
+
return [];
|
|
19598
|
+
}
|
|
19599
|
+
}
|
|
19600
|
+
async fetchSession(auth) {
|
|
19601
|
+
try {
|
|
19602
|
+
const response = await fetch(`${this.proxyUrl}/api/v1/auth/session`, {
|
|
19603
|
+
headers: auth.getHeaders()
|
|
19604
|
+
});
|
|
19605
|
+
if (!response.ok) {
|
|
19606
|
+
Logger.getInstance().warn(`Failed to fetch session: ${response.status} ${response.statusText}`);
|
|
19607
|
+
return null;
|
|
19608
|
+
}
|
|
19609
|
+
const result = await response.json();
|
|
19610
|
+
const isSuccess = result.success === true || result.success === "true";
|
|
19611
|
+
if (isSuccess && result.data && result.data.userId) {
|
|
19612
|
+
return result.data.userId;
|
|
19613
|
+
}
|
|
19614
|
+
return null;
|
|
19615
|
+
} catch (error) {
|
|
19616
|
+
Logger.getInstance().error("Error fetching session:", error);
|
|
19617
|
+
return null;
|
|
19618
|
+
}
|
|
19619
|
+
}
|
|
19620
|
+
};
|
|
19621
|
+
var proxyApi = new ProxyApi(getConfig().service.proxyUrl);
|
|
19622
|
+
|
|
19623
|
+
// src/transport/server/hono-server.ts
|
|
19624
|
+
var HonoServer = class {
|
|
19625
|
+
constructor(onActivity) {
|
|
19626
|
+
this.onActivity = onActivity;
|
|
19627
|
+
this.app = new Hono2();
|
|
19628
|
+
this.setupRoutes();
|
|
19629
|
+
}
|
|
19630
|
+
app;
|
|
19631
|
+
handlers = /* @__PURE__ */ new Map();
|
|
19632
|
+
server;
|
|
19633
|
+
setupRoutes() {
|
|
19634
|
+
this.app.use("*", async (c, next) => {
|
|
19635
|
+
this.onActivity?.();
|
|
19636
|
+
await next();
|
|
19637
|
+
});
|
|
19638
|
+
this.app.post("/", async (c) => {
|
|
19639
|
+
const apiKey = c.req.header("x-api-key");
|
|
19640
|
+
const authHeader = c.req.header("authorization");
|
|
19641
|
+
let auth;
|
|
19642
|
+
if (apiKey) {
|
|
19643
|
+
auth = AuthInput.fromApiKey(apiKey);
|
|
19644
|
+
} else if (authHeader && authHeader.startsWith("Bearer ")) {
|
|
19645
|
+
const jwtToken = authHeader.substring(7);
|
|
19646
|
+
auth = AuthInput.fromJwtToken(jwtToken);
|
|
19647
|
+
}
|
|
19648
|
+
let body;
|
|
19649
|
+
try {
|
|
19650
|
+
body = await c.req.json();
|
|
19651
|
+
} catch (e) {
|
|
19652
|
+
return c.json({
|
|
19653
|
+
jsonrpc: "2.0",
|
|
19654
|
+
id: null,
|
|
19655
|
+
error: { code: -32700 /* PARSE_ERROR */, message: "Parse error" }
|
|
19656
|
+
}, 400);
|
|
19657
|
+
}
|
|
19658
|
+
Logger.getInstance().debug("Executing RPC handler", {
|
|
19659
|
+
hasApiKey: !!apiKey,
|
|
19660
|
+
hasJwtToken: !!authHeader,
|
|
19661
|
+
method: body?.method,
|
|
19662
|
+
requestId: body?.id,
|
|
19663
|
+
params: body?.params
|
|
19664
|
+
});
|
|
19665
|
+
if (!auth) {
|
|
19666
|
+
Logger.getInstance().debug("Unauthorized: No valid authentication provided");
|
|
19667
|
+
return c.json({
|
|
19668
|
+
jsonrpc: "2.0",
|
|
19669
|
+
id: body?.id || null,
|
|
19670
|
+
error: {
|
|
19671
|
+
code: -32001 /* UNAUTHORIZED */,
|
|
19672
|
+
message: "Unauthorized: Please provide either x-api-key or Authorization header"
|
|
19673
|
+
}
|
|
19674
|
+
}, 401);
|
|
19675
|
+
}
|
|
19676
|
+
if (!body || body.jsonrpc !== "2.0" || !body.method || !body.id) {
|
|
19677
|
+
Logger.getInstance().debug("Invalid Request: Not a standard JSON-RPC 2.0");
|
|
19678
|
+
return c.json({
|
|
19679
|
+
jsonrpc: "2.0",
|
|
19680
|
+
id: body?.id || null,
|
|
19681
|
+
error: { code: -32600 /* INVALID_REQUEST */, message: "Invalid Request: Not a standard JSON-RPC 2.0" }
|
|
19682
|
+
}, 400);
|
|
19683
|
+
}
|
|
19684
|
+
const handler = this.handlers.get(body.method);
|
|
19685
|
+
if (!handler) {
|
|
19686
|
+
return c.json({
|
|
19687
|
+
jsonrpc: "2.0",
|
|
19688
|
+
id: body.id,
|
|
19689
|
+
error: { code: -32601 /* METHOD_NOT_FOUND */, message: `Method not found: ${body.method}` }
|
|
19690
|
+
});
|
|
19691
|
+
}
|
|
19692
|
+
try {
|
|
19693
|
+
const result = await handler(body.params, auth);
|
|
19694
|
+
Logger.getInstance().debug("RPC handler executed successfully", {
|
|
19695
|
+
method: body.method,
|
|
19696
|
+
requestId: body.id
|
|
19697
|
+
});
|
|
19698
|
+
return c.json({
|
|
19699
|
+
jsonrpc: "2.0",
|
|
19700
|
+
id: body.id,
|
|
19701
|
+
result
|
|
19702
|
+
});
|
|
19703
|
+
} catch (err) {
|
|
19704
|
+
Logger.getInstance().error(`RPC Handler Error for ${body.method}:`, err);
|
|
19705
|
+
return c.json({
|
|
19706
|
+
jsonrpc: "2.0",
|
|
19707
|
+
id: body.id,
|
|
19708
|
+
error: { code: -32603 /* INTERNAL_ERROR */, message: err.message || "Internal error" }
|
|
19709
|
+
});
|
|
19710
|
+
}
|
|
19711
|
+
});
|
|
19712
|
+
}
|
|
19713
|
+
registerHandler(method, handler) {
|
|
19714
|
+
Logger.getInstance().info(`Register handler ${method}`);
|
|
19715
|
+
this.handlers.set(method, handler);
|
|
19716
|
+
}
|
|
19717
|
+
async listen(options) {
|
|
19718
|
+
const requestListener = getRequestListener(this.app.fetch);
|
|
19719
|
+
this.server = (0, import_node_http.createServer)(requestListener);
|
|
19720
|
+
return new Promise((resolve, reject) => {
|
|
19721
|
+
const onError = (err) => {
|
|
19722
|
+
Logger.getInstance().error("Failed to start Hono Server", err);
|
|
19723
|
+
reject(err);
|
|
19724
|
+
};
|
|
19725
|
+
this.server.once("error", onError);
|
|
19726
|
+
if (options.path) {
|
|
19727
|
+
this.server.listen(options.path, () => {
|
|
19728
|
+
this.server.removeListener("error", onError);
|
|
19729
|
+
Logger.getInstance().info(`Hono Server listening on pipe/socket: ${options.path}`);
|
|
19730
|
+
resolve();
|
|
19731
|
+
});
|
|
19732
|
+
} else {
|
|
19733
|
+
this.server.listen(options.port || 3e3, options.host || "127.0.0.1", () => {
|
|
19734
|
+
this.server.removeListener("error", onError);
|
|
19735
|
+
Logger.getInstance().info(`Hono Server listening on HTTP, port: ${options.port}, host: ${options.host}`);
|
|
18758
19736
|
resolve();
|
|
18759
19737
|
});
|
|
18760
19738
|
}
|
|
@@ -18792,13 +19770,13 @@ function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
|
18792
19770
|
|
|
18793
19771
|
// node_modules/openai/internal/utils/uuid.mjs
|
|
18794
19772
|
var uuid4 = function() {
|
|
18795
|
-
const { crypto:
|
|
18796
|
-
if (
|
|
18797
|
-
uuid4 =
|
|
18798
|
-
return
|
|
19773
|
+
const { crypto: crypto6 } = globalThis;
|
|
19774
|
+
if (crypto6?.randomUUID) {
|
|
19775
|
+
uuid4 = crypto6.randomUUID.bind(crypto6);
|
|
19776
|
+
return crypto6.randomUUID();
|
|
18799
19777
|
}
|
|
18800
19778
|
const u8 = new Uint8Array(1);
|
|
18801
|
-
const randomByte =
|
|
19779
|
+
const randomByte = crypto6 ? () => crypto6.getRandomValues(u8)[0] : () => Math.random() * 255 & 255;
|
|
18802
19780
|
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => (+c ^ randomByte() & 15 >> +c / 4).toString(16));
|
|
18803
19781
|
};
|
|
18804
19782
|
|
|
@@ -25590,51 +26568,56 @@ var LLMService = class {
|
|
|
25590
26568
|
limit = (0, import_p_limit.default)(5);
|
|
25591
26569
|
// Concurrency limit for LLM calls
|
|
25592
26570
|
LLMURL = "https://api.syn-cause.com/llm";
|
|
25593
|
-
|
|
25594
|
-
language = "
|
|
25595
|
-
constructor(
|
|
25596
|
-
this.
|
|
26571
|
+
auth;
|
|
26572
|
+
language = "English";
|
|
26573
|
+
constructor(auth, language) {
|
|
26574
|
+
this.auth = auth;
|
|
25597
26575
|
this.language = language || this.detectLanguage();
|
|
25598
26576
|
}
|
|
25599
26577
|
detectLanguage() {
|
|
25600
26578
|
try {
|
|
25601
26579
|
const envLang = process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL || process.env.LC_MESSAGES;
|
|
25602
26580
|
if (envLang && envLang.toLowerCase().startsWith("zh")) {
|
|
25603
|
-
return "
|
|
26581
|
+
return "Chinese";
|
|
25604
26582
|
}
|
|
25605
26583
|
const locale = Intl.DateTimeFormat().resolvedOptions().locale;
|
|
25606
26584
|
if (locale.toLowerCase().startsWith("zh")) {
|
|
25607
|
-
return "
|
|
26585
|
+
return "Chinese";
|
|
25608
26586
|
}
|
|
25609
26587
|
} catch (e) {
|
|
25610
26588
|
}
|
|
25611
|
-
return "
|
|
26589
|
+
return "English";
|
|
25612
26590
|
}
|
|
25613
26591
|
async embedding(text) {
|
|
25614
|
-
|
|
25615
|
-
|
|
25616
|
-
|
|
25617
|
-
|
|
25618
|
-
|
|
25619
|
-
|
|
25620
|
-
|
|
25621
|
-
|
|
25622
|
-
|
|
25623
|
-
|
|
25624
|
-
|
|
26592
|
+
return this.limit(async () => {
|
|
26593
|
+
const apiKey = this.auth.getLlmKey();
|
|
26594
|
+
if (!apiKey) {
|
|
26595
|
+
throw new Error("LLM API Key (userApiKey) is not set");
|
|
26596
|
+
}
|
|
26597
|
+
const llm = new OpenAI({
|
|
26598
|
+
apiKey,
|
|
26599
|
+
baseURL: this.LLMURL
|
|
26600
|
+
});
|
|
26601
|
+
const embedding = await llm.embeddings.create({
|
|
26602
|
+
model: "qwen3-embedding-8b",
|
|
26603
|
+
input: text,
|
|
26604
|
+
encoding_format: "float"
|
|
26605
|
+
});
|
|
26606
|
+
return embedding.data[0].embedding;
|
|
25625
26607
|
});
|
|
25626
|
-
return embedding.data[0].embedding;
|
|
25627
26608
|
}
|
|
25628
26609
|
async processRuntimeFactWithLLM(trace) {
|
|
25629
|
-
|
|
25630
|
-
|
|
25631
|
-
|
|
25632
|
-
|
|
25633
|
-
|
|
25634
|
-
|
|
26610
|
+
return this.limit(async () => {
|
|
26611
|
+
const apiKey = this.auth.getLlmKey();
|
|
26612
|
+
if (!apiKey) {
|
|
26613
|
+
Logger.getInstance().error("LLM API Key is missing, skipping LLM processing");
|
|
26614
|
+
return trace;
|
|
26615
|
+
}
|
|
26616
|
+
const temp_spans = trace.invokeTree;
|
|
26617
|
+
let prompt = `
|
|
25635
26618
|
<task>
|
|
25636
26619
|
This is runtime data captured from a program.
|
|
25637
|
-
Please generate a JSON summary based on the data provided.
|
|
26620
|
+
Please generate a JSON summary based on the data provided. Output in ${this.language}.
|
|
25638
26621
|
</task>
|
|
25639
26622
|
<output_format>
|
|
25640
26623
|
\`\`\`json
|
|
@@ -25651,57 +26634,37 @@ The data is as follows:
|
|
|
25651
26634
|
${JSON.stringify(temp_spans)}
|
|
25652
26635
|
</data>
|
|
25653
26636
|
`;
|
|
25654
|
-
|
|
25655
|
-
|
|
25656
|
-
|
|
25657
|
-
|
|
25658
|
-
|
|
25659
|
-
|
|
25660
|
-
|
|
25661
|
-
{
|
|
25662
|
-
|
|
25663
|
-
|
|
25664
|
-
|
|
25665
|
-
|
|
25666
|
-
|
|
25667
|
-
|
|
25668
|
-
|
|
25669
|
-
|
|
25670
|
-
|
|
25671
|
-
${
|
|
25672
|
-
|
|
25673
|
-
|
|
25674
|
-
|
|
25675
|
-
|
|
25676
|
-
|
|
25677
|
-
apiKey: this.apiKey,
|
|
25678
|
-
baseURL: this.LLMURL
|
|
25679
|
-
});
|
|
25680
|
-
const res = await this.limit(() => llm.chat.completions.create({
|
|
25681
|
-
model: "gpt-4.1-nano",
|
|
25682
|
-
messages: [{ role: "user", content: prompt }],
|
|
25683
|
-
temperature: 0.3
|
|
25684
|
-
}));
|
|
25685
|
-
const content = res.choices[0].message?.content || "";
|
|
25686
|
-
trace.llmRawResponse = content;
|
|
25687
|
-
const extracted = this.extractJsonFromString(content);
|
|
25688
|
-
if (extracted) {
|
|
25689
|
-
try {
|
|
25690
|
-
trace.summaryEmbedding = await this.embedding(extracted.summary);
|
|
25691
|
-
} catch (error) {
|
|
25692
|
-
Logger.getInstance().error(`Failed to generate embedding for trace ${trace.traceId}:`, error);
|
|
26637
|
+
try {
|
|
26638
|
+
const llm = new OpenAI({
|
|
26639
|
+
apiKey,
|
|
26640
|
+
baseURL: this.LLMURL
|
|
26641
|
+
});
|
|
26642
|
+
const res = await llm.chat.completions.create({
|
|
26643
|
+
model: "gpt-4.1-nano",
|
|
26644
|
+
messages: [{ role: "user", content: prompt }],
|
|
26645
|
+
temperature: 0.3
|
|
26646
|
+
});
|
|
26647
|
+
const content = res.choices[0].message?.content || "";
|
|
26648
|
+
trace.llmRawResponse = content;
|
|
26649
|
+
const extracted = this.extractJsonFromString(content);
|
|
26650
|
+
if (extracted) {
|
|
26651
|
+
try {
|
|
26652
|
+
trace.summaryEmbedding = await this.embedding(extracted.summary);
|
|
26653
|
+
} catch (error) {
|
|
26654
|
+
Logger.getInstance().error(`Failed to generate embedding for trace ${trace.traceId}:`, error);
|
|
26655
|
+
}
|
|
26656
|
+
return { ...trace, ...extracted };
|
|
26657
|
+
} else {
|
|
26658
|
+
trace.llmError = "Failed to extract JSON from response";
|
|
26659
|
+
Logger.getInstance().warn(`Failed to extract JSON for ${trace.traceId}. Content: ${content}`);
|
|
25693
26660
|
}
|
|
25694
|
-
|
|
25695
|
-
|
|
25696
|
-
|
|
25697
|
-
|
|
26661
|
+
} catch (error) {
|
|
26662
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
26663
|
+
Logger.getInstance().error(`LLM processing failed for trace ${trace.traceId}:`, error);
|
|
26664
|
+
trace.llmError = errorMessage;
|
|
25698
26665
|
}
|
|
25699
|
-
|
|
25700
|
-
|
|
25701
|
-
Logger.getInstance().error(`LLM processing failed for trace ${trace.traceId}:`, error);
|
|
25702
|
-
trace.llmError = errorMessage;
|
|
25703
|
-
}
|
|
25704
|
-
return trace;
|
|
26666
|
+
return trace;
|
|
26667
|
+
});
|
|
25705
26668
|
}
|
|
25706
26669
|
extractJsonFromString(input) {
|
|
25707
26670
|
const match2 = input.match(/```json\s*([\s\S]*?)\s*```/);
|
|
@@ -25721,12 +26684,10 @@ ${JSON.stringify(temp_spans)}
|
|
|
25721
26684
|
|
|
25722
26685
|
// src/core/services/AppService.ts
|
|
25723
26686
|
var AppService = class {
|
|
25724
|
-
|
|
25725
|
-
proxyUrl = "";
|
|
26687
|
+
auth;
|
|
25726
26688
|
appCache = /* @__PURE__ */ new Map();
|
|
25727
|
-
constructor(
|
|
25728
|
-
this.
|
|
25729
|
-
this.proxyUrl = proxyUrl;
|
|
26689
|
+
constructor(auth) {
|
|
26690
|
+
this.auth = auth;
|
|
25730
26691
|
}
|
|
25731
26692
|
/**
|
|
25732
26693
|
* Convert AppResponse to App
|
|
@@ -25740,26 +26701,7 @@ var AppService = class {
|
|
|
25740
26701
|
};
|
|
25741
26702
|
}
|
|
25742
26703
|
async fetchAppList() {
|
|
25743
|
-
|
|
25744
|
-
Logger.getInstance().warn("No API key found for fetching app list.");
|
|
25745
|
-
return [];
|
|
25746
|
-
}
|
|
25747
|
-
try {
|
|
25748
|
-
const applist_response = await fetch(`${this.proxyUrl}/api/v1/apps?api_key=${this.userApiKey}`, {
|
|
25749
|
-
headers: {
|
|
25750
|
-
"X-API_Key": this.userApiKey
|
|
25751
|
-
}
|
|
25752
|
-
});
|
|
25753
|
-
const applist_data = await applist_response.json();
|
|
25754
|
-
if (applist_data.code !== 200 || !applist_data.data) {
|
|
25755
|
-
Logger.getInstance().warn("Failed to fetch app list or no data returned");
|
|
25756
|
-
return [];
|
|
25757
|
-
}
|
|
25758
|
-
return Array.isArray(applist_data.data) ? applist_data.data : [];
|
|
25759
|
-
} catch (error) {
|
|
25760
|
-
Logger.getInstance().error("Error fetching app list:", error);
|
|
25761
|
-
return [];
|
|
25762
|
-
}
|
|
26704
|
+
return proxyApi.fetchAppList(this.auth.get());
|
|
25763
26705
|
}
|
|
25764
26706
|
/**
|
|
25765
26707
|
* Refreshes the internal app cache by fetching the latest app list.
|
|
@@ -25767,6 +26709,9 @@ var AppService = class {
|
|
|
25767
26709
|
*/
|
|
25768
26710
|
async refreshCache() {
|
|
25769
26711
|
const appResponses = await this.fetchAppList();
|
|
26712
|
+
if (appResponses === null) {
|
|
26713
|
+
return Array.from(this.appCache.values()).filter((app) => app.isConnected).map((app) => app.id);
|
|
26714
|
+
}
|
|
25770
26715
|
const newCache = /* @__PURE__ */ new Map();
|
|
25771
26716
|
const connectedAppIds = [];
|
|
25772
26717
|
for (const appResponse of appResponses) {
|
|
@@ -25777,6 +26722,7 @@ var AppService = class {
|
|
|
25777
26722
|
}
|
|
25778
26723
|
}
|
|
25779
26724
|
this.appCache = newCache;
|
|
26725
|
+
Logger.getInstance().debug(`Found ${connectedAppIds.length} apps with key: ${this.auth.getLlmKey().substring(0, 10)}...`);
|
|
25780
26726
|
return connectedAppIds;
|
|
25781
26727
|
}
|
|
25782
26728
|
getCachedApp(appId) {
|
|
@@ -25799,18 +26745,27 @@ var AppService = class {
|
|
|
25799
26745
|
}
|
|
25800
26746
|
async getActiveAppByProjectId(projectId) {
|
|
25801
26747
|
const appResponses = await this.fetchAppList();
|
|
26748
|
+
if (appResponses === null) {
|
|
26749
|
+
const cachedApp = Array.from(this.appCache.values()).find((app) => app.projectId === projectId && app.isConnected);
|
|
26750
|
+
if (cachedApp) return cachedApp;
|
|
26751
|
+
return Array.from(this.appCache.values()).find((app) => app.projectId === projectId) || null;
|
|
26752
|
+
}
|
|
25802
26753
|
const currentApps = appResponses.filter((app) => app.project_id === projectId);
|
|
25803
26754
|
if (currentApps.length === 0) {
|
|
25804
26755
|
Logger.getInstance().warn(`No apps found with projectId: ${projectId}`);
|
|
25805
26756
|
return null;
|
|
25806
26757
|
}
|
|
25807
26758
|
const connectedApps = currentApps.filter((app) => app.is_connected);
|
|
25808
|
-
const appIds = connectedApps.length > 0 ? connectedApps.map((app) => app.id).filter((id) => id !== void 0) : currentApps.map((app) => app.id).filter((id) => id !== void 0);
|
|
25809
26759
|
let selectedAppResponse = connectedApps.length > 0 ? connectedApps[0] : currentApps[0];
|
|
25810
26760
|
return this.convertAppResponseToApp(selectedAppResponse);
|
|
25811
26761
|
}
|
|
25812
26762
|
async getAppStatus(projectId) {
|
|
25813
26763
|
const appResponses = await this.fetchAppList();
|
|
26764
|
+
if (appResponses === null) {
|
|
26765
|
+
const projectApps2 = Array.from(this.appCache.values()).filter((app) => app.projectId === projectId);
|
|
26766
|
+
if (projectApps2.length === 0) return "NOT_FOUND" /* NOT_FOUND */;
|
|
26767
|
+
return projectApps2.some((app) => app.isConnected) ? "CONNECTED" /* CONNECTED */ : "DISCONNECTED" /* DISCONNECTED */;
|
|
26768
|
+
}
|
|
25814
26769
|
const projectApps = appResponses.filter((app) => app.project_id === projectId);
|
|
25815
26770
|
if (projectApps.length === 0) {
|
|
25816
26771
|
return "NOT_FOUND" /* NOT_FOUND */;
|
|
@@ -25820,152 +26775,6 @@ var AppService = class {
|
|
|
25820
26775
|
}
|
|
25821
26776
|
};
|
|
25822
26777
|
|
|
25823
|
-
// src/config/index.ts
|
|
25824
|
-
function getArgValue(key) {
|
|
25825
|
-
const keys = [key, key.toLowerCase()];
|
|
25826
|
-
for (const k of keys) {
|
|
25827
|
-
const prefix = `--${k}=`;
|
|
25828
|
-
const arg = process.argv.find((a) => a.startsWith(prefix));
|
|
25829
|
-
if (arg) return arg.slice(prefix.length);
|
|
25830
|
-
const index = process.argv.indexOf(`--${k}`);
|
|
25831
|
-
if (index !== -1 && index + 1 < process.argv.length && !process.argv[index + 1].startsWith("--")) {
|
|
25832
|
-
return process.argv[index + 1];
|
|
25833
|
-
}
|
|
25834
|
-
}
|
|
25835
|
-
return void 0;
|
|
25836
|
-
}
|
|
25837
|
-
function hasArgFlag(key) {
|
|
25838
|
-
const keys = [key, key.toLowerCase()];
|
|
25839
|
-
return keys.some((k) => process.argv.includes(`--${k}`));
|
|
25840
|
-
}
|
|
25841
|
-
function parseConfigInt(key, defaultValue) {
|
|
25842
|
-
const argValue = getArgValue(key);
|
|
25843
|
-
if (argValue) {
|
|
25844
|
-
const parsed2 = parseInt(argValue, 10);
|
|
25845
|
-
if (!isNaN(parsed2)) return parsed2;
|
|
25846
|
-
}
|
|
25847
|
-
const value = process.env[key];
|
|
25848
|
-
if (!value) return defaultValue;
|
|
25849
|
-
const parsed = parseInt(value, 10);
|
|
25850
|
-
return isNaN(parsed) ? defaultValue : parsed;
|
|
25851
|
-
}
|
|
25852
|
-
function parseConfigBool(key, defaultValue) {
|
|
25853
|
-
const argValue = getArgValue(key);
|
|
25854
|
-
if (argValue !== void 0) {
|
|
25855
|
-
const parsed2 = argValue.toLowerCase();
|
|
25856
|
-
return parsed2 === "true" || parsed2 === "1";
|
|
25857
|
-
}
|
|
25858
|
-
if (hasArgFlag(key)) {
|
|
25859
|
-
return true;
|
|
25860
|
-
}
|
|
25861
|
-
const value = process.env[key];
|
|
25862
|
-
if (!value) return defaultValue;
|
|
25863
|
-
const parsed = value.toLowerCase();
|
|
25864
|
-
return parsed === "true" || parsed === "1";
|
|
25865
|
-
}
|
|
25866
|
-
function parseConfigString(key, defaultValue) {
|
|
25867
|
-
return getArgValue(key) || process.env[key] || defaultValue;
|
|
25868
|
-
}
|
|
25869
|
-
function buildServerConfig() {
|
|
25870
|
-
return {
|
|
25871
|
-
mode: parseConfigString("MODE", "local").toLowerCase(),
|
|
25872
|
-
autoShutdownMinutes: parseConfigInt("AUTO_SHUTDOWN_MINUTES", 5),
|
|
25873
|
-
httpPort: parseConfigInt("HTTP_PORT", 8080)
|
|
25874
|
-
};
|
|
25875
|
-
}
|
|
25876
|
-
function buildLogConfig() {
|
|
25877
|
-
return {
|
|
25878
|
-
logToConsole: parseConfigBool("LOG_TO_CONSOLE", false),
|
|
25879
|
-
logLevel: parseConfigString("LOG_LEVEL", "info").toLowerCase()
|
|
25880
|
-
};
|
|
25881
|
-
}
|
|
25882
|
-
function buildStorageConfig() {
|
|
25883
|
-
return {
|
|
25884
|
-
persistInterval: parseConfigInt("STORAGE_PERSIST_INTERVAL", 5e3),
|
|
25885
|
-
// 5 second
|
|
25886
|
-
maxTracesPerApp: parseConfigInt("STORAGE_MAX_TRACES_PER_APP", 250)
|
|
25887
|
-
};
|
|
25888
|
-
}
|
|
25889
|
-
function buildServiceConfig() {
|
|
25890
|
-
return {
|
|
25891
|
-
proxyUrl: parseConfigString("SERVICE_PROXY_URL", "https://api.syn-cause.com/codeproxy"),
|
|
25892
|
-
pollingInterval: parseConfigInt("SERVICE_POLLING_INTERVAL", 1e4)
|
|
25893
|
-
// 10 second
|
|
25894
|
-
};
|
|
25895
|
-
}
|
|
25896
|
-
var cachedConfig = null;
|
|
25897
|
-
function getConfig() {
|
|
25898
|
-
if (!cachedConfig) {
|
|
25899
|
-
cachedConfig = {
|
|
25900
|
-
server: buildServerConfig(),
|
|
25901
|
-
log: buildLogConfig(),
|
|
25902
|
-
storage: buildStorageConfig(),
|
|
25903
|
-
service: buildServiceConfig()
|
|
25904
|
-
};
|
|
25905
|
-
}
|
|
25906
|
-
return cachedConfig;
|
|
25907
|
-
}
|
|
25908
|
-
|
|
25909
|
-
// src/core/services/TracePollingService.ts
|
|
25910
|
-
var TracePollingService = class {
|
|
25911
|
-
userApiKey;
|
|
25912
|
-
proxyUrl;
|
|
25913
|
-
constructor(apiKey, proxyUrl) {
|
|
25914
|
-
this.userApiKey = apiKey;
|
|
25915
|
-
this.proxyUrl = proxyUrl;
|
|
25916
|
-
}
|
|
25917
|
-
/**
|
|
25918
|
-
* Poll runtime facts for a specific appId
|
|
25919
|
-
* @param appId The application ID to poll traces for
|
|
25920
|
-
* @returns Array of runtime facts or empty array if failed
|
|
25921
|
-
*/
|
|
25922
|
-
async pollRuntimeFacts(appId) {
|
|
25923
|
-
try {
|
|
25924
|
-
const response = await fetch(`${this.proxyUrl}/api/v1/traces/${appId}?api_key=${this.userApiKey}`, {
|
|
25925
|
-
headers: {
|
|
25926
|
-
"X-API_Key": this.userApiKey
|
|
25927
|
-
}
|
|
25928
|
-
});
|
|
25929
|
-
if (!response.ok) {
|
|
25930
|
-
Logger.getInstance().warn(`Failed to fetch RuntimeFacts for ${appId}: ${response.status} ${response.statusText}`);
|
|
25931
|
-
return [];
|
|
25932
|
-
}
|
|
25933
|
-
const data = await response.json();
|
|
25934
|
-
if (!Array.isArray(data.data)) {
|
|
25935
|
-
Logger.getInstance().warn("Fetched data is not an array:", data.data);
|
|
25936
|
-
return [];
|
|
25937
|
-
}
|
|
25938
|
-
if (data.data.length > 0) {
|
|
25939
|
-
Logger.getInstance().info(`Fetched ${data.data.length} RuntimeFacts for ${appId}.`);
|
|
25940
|
-
}
|
|
25941
|
-
return data.data;
|
|
25942
|
-
} catch (error) {
|
|
25943
|
-
Logger.getInstance().error(`Error polling traces for ${appId}:`, error);
|
|
25944
|
-
return [];
|
|
25945
|
-
}
|
|
25946
|
-
}
|
|
25947
|
-
/**
|
|
25948
|
-
* Poll runtime facts for multiple appIds in parallel
|
|
25949
|
-
* @param appIds Array of application IDs to poll
|
|
25950
|
-
* @returns Map of appId to runtime facts
|
|
25951
|
-
*/
|
|
25952
|
-
async pollMultipleApps(appIds) {
|
|
25953
|
-
const results = await Promise.all(
|
|
25954
|
-
appIds.map(async (appId) => ({
|
|
25955
|
-
appId,
|
|
25956
|
-
facts: await this.pollRuntimeFacts(appId)
|
|
25957
|
-
}))
|
|
25958
|
-
);
|
|
25959
|
-
const resultMap = /* @__PURE__ */ new Map();
|
|
25960
|
-
for (const { appId, facts } of results) {
|
|
25961
|
-
if (facts.length > 0) {
|
|
25962
|
-
resultMap.set(appId, facts);
|
|
25963
|
-
}
|
|
25964
|
-
}
|
|
25965
|
-
return resultMap;
|
|
25966
|
-
}
|
|
25967
|
-
};
|
|
25968
|
-
|
|
25969
26778
|
// node_modules/uuid/dist/esm-node/rng.js
|
|
25970
26779
|
var import_crypto2 = __toESM(require("crypto"));
|
|
25971
26780
|
var rnds8Pool = new Uint8Array(256);
|
|
@@ -26345,12 +27154,10 @@ var FuzzySearchStrategy = class {
|
|
|
26345
27154
|
// src/core/services/TraceSearchService.ts
|
|
26346
27155
|
var TraceSearchService = class {
|
|
26347
27156
|
diskStorage;
|
|
26348
|
-
appService;
|
|
26349
27157
|
embeddingStrategy;
|
|
26350
27158
|
fuzzyStrategy;
|
|
26351
|
-
constructor(diskStorage, llmService
|
|
27159
|
+
constructor(diskStorage, llmService) {
|
|
26352
27160
|
this.diskStorage = diskStorage;
|
|
26353
|
-
this.appService = appService;
|
|
26354
27161
|
this.embeddingStrategy = new EmbeddingSearchStrategy(llmService);
|
|
26355
27162
|
this.fuzzyStrategy = new FuzzySearchStrategy();
|
|
26356
27163
|
}
|
|
@@ -26446,21 +27253,19 @@ var RuntimeFactService = class {
|
|
|
26446
27253
|
llmService;
|
|
26447
27254
|
appService;
|
|
26448
27255
|
// Sub-services
|
|
26449
|
-
pollingService;
|
|
26450
27256
|
processingService;
|
|
26451
27257
|
searchService;
|
|
26452
|
-
userApiKey = "";
|
|
26453
27258
|
proxyUrl;
|
|
26454
|
-
|
|
26455
|
-
|
|
27259
|
+
proxyAuth;
|
|
27260
|
+
constructor(auth, diskStorage) {
|
|
26456
27261
|
this.diskStorage = diskStorage;
|
|
26457
27262
|
this.proxyUrl = getConfig().service.proxyUrl;
|
|
26458
|
-
this.
|
|
26459
|
-
this.
|
|
26460
|
-
this.
|
|
27263
|
+
this.proxyAuth = new ProxyAuth(auth);
|
|
27264
|
+
this.llmService = new LLMService(this.proxyAuth);
|
|
27265
|
+
this.appService = new AppService(this.proxyAuth);
|
|
26461
27266
|
this.processingService = new TraceProcessingService(diskStorage, this.llmService);
|
|
26462
|
-
this.searchService = new TraceSearchService(diskStorage, this.llmService
|
|
26463
|
-
Logger.getInstance().info(`Registered RuntimeFactsService
|
|
27267
|
+
this.searchService = new TraceSearchService(diskStorage, this.llmService);
|
|
27268
|
+
Logger.getInstance().info(`Registered RuntimeFactsService with proxyUrl: ${this.proxyUrl}`);
|
|
26464
27269
|
}
|
|
26465
27270
|
getDiskStorage() {
|
|
26466
27271
|
return this.diskStorage;
|
|
@@ -26474,18 +27279,27 @@ var RuntimeFactService = class {
|
|
|
26474
27279
|
getAllApps() {
|
|
26475
27280
|
return this.appService.getAllApps();
|
|
26476
27281
|
}
|
|
26477
|
-
async pollAllApps() {
|
|
27282
|
+
async pollAllApps(processedAppIds) {
|
|
26478
27283
|
try {
|
|
26479
|
-
|
|
27284
|
+
let connectedAppIds = await this.appService.refreshCache();
|
|
27285
|
+
if (processedAppIds && processedAppIds.size > 0) {
|
|
27286
|
+
const beforeCount = connectedAppIds.length;
|
|
27287
|
+
connectedAppIds = connectedAppIds.filter((id) => !processedAppIds.has(id));
|
|
27288
|
+
const afterCount = connectedAppIds.length;
|
|
27289
|
+
if (beforeCount !== afterCount) {
|
|
27290
|
+
Logger.getInstance().info(`Skipping ${beforeCount - afterCount} apps already processed in this cycle.`);
|
|
27291
|
+
}
|
|
27292
|
+
}
|
|
26480
27293
|
await Promise.all(connectedAppIds.map((appId) => this.pollAndProcessApp(appId)));
|
|
26481
|
-
|
|
26482
|
-
|
|
27294
|
+
if (processedAppIds) {
|
|
27295
|
+
connectedAppIds.forEach((id) => processedAppIds.add(id));
|
|
27296
|
+
}
|
|
26483
27297
|
} catch (error) {
|
|
26484
27298
|
Logger.getInstance().error("Error polling all apps:", error);
|
|
26485
27299
|
}
|
|
26486
27300
|
}
|
|
26487
27301
|
async pollAndProcessApp(appId) {
|
|
26488
|
-
const facts = await this.
|
|
27302
|
+
const facts = await proxyApi.pollRuntimeFacts(appId, this.proxyAuth.get());
|
|
26489
27303
|
if (facts.length > 0) {
|
|
26490
27304
|
const app = this.appService.getCachedApp(appId);
|
|
26491
27305
|
if (app && app.projectId) {
|
|
@@ -26501,20 +27315,59 @@ var RuntimeFactService = class {
|
|
|
26501
27315
|
}
|
|
26502
27316
|
}
|
|
26503
27317
|
async getRuntimeFacts(projectId, searchText, matchMode = "embedding", limit2 = 10) {
|
|
27318
|
+
if (!this.checkProjectAccess(projectId)) {
|
|
27319
|
+
return [];
|
|
27320
|
+
}
|
|
26504
27321
|
return this.searchService.getRuntimeFacts(projectId, searchText, matchMode, limit2);
|
|
26505
27322
|
}
|
|
26506
27323
|
async getRuntimeEvents(projectId) {
|
|
27324
|
+
if (!this.checkProjectAccess(projectId)) {
|
|
27325
|
+
return [];
|
|
27326
|
+
}
|
|
26507
27327
|
return this.diskStorage.getProjectRuntimeEvents(projectId);
|
|
26508
27328
|
}
|
|
26509
27329
|
async findTraceById(traceId, projectId) {
|
|
27330
|
+
if (!this.checkProjectAccess(projectId)) {
|
|
27331
|
+
return null;
|
|
27332
|
+
}
|
|
26510
27333
|
return this.searchService.findTraceById(traceId, projectId);
|
|
26511
27334
|
}
|
|
26512
27335
|
async searchTraces(query, limit2 = 5, projectId, minSimilarity) {
|
|
27336
|
+
if (!this.checkProjectAccess(projectId)) {
|
|
27337
|
+
return [];
|
|
27338
|
+
}
|
|
26513
27339
|
return this.searchService.searchTraces(query, limit2, projectId, minSimilarity);
|
|
26514
27340
|
}
|
|
26515
27341
|
async getAppStatus(projectId) {
|
|
27342
|
+
if (!this.checkProjectAccess(projectId)) {
|
|
27343
|
+
return "NOT_FOUND" /* NOT_FOUND */;
|
|
27344
|
+
}
|
|
26516
27345
|
return this.appService.getAppStatus(projectId);
|
|
26517
27346
|
}
|
|
27347
|
+
/**
|
|
27348
|
+
* Checks if the current user has access to the given projectId.
|
|
27349
|
+
*/
|
|
27350
|
+
checkProjectAccess(projectId) {
|
|
27351
|
+
const activeProjectIds = this.appService.getCachedProjectIds();
|
|
27352
|
+
const hasAccess = activeProjectIds.includes(projectId);
|
|
27353
|
+
if (!hasAccess) {
|
|
27354
|
+
Logger.getInstance().warn(`Unauthorized access attempt to projectId: ${projectId} by user with key: ${this.proxyAuth.getLlmKey().substring(0, 10)}...`);
|
|
27355
|
+
}
|
|
27356
|
+
return hasAccess;
|
|
27357
|
+
}
|
|
27358
|
+
/**
|
|
27359
|
+
* Get the list of project IDs that are currently active (in cache) for this user.
|
|
27360
|
+
*/
|
|
27361
|
+
getActiveProjectIds() {
|
|
27362
|
+
return this.appService.getCachedProjectIds();
|
|
27363
|
+
}
|
|
27364
|
+
/**
|
|
27365
|
+
* Update the authentication information for this service and its components.
|
|
27366
|
+
* Returns true if the authentication was actually changed.
|
|
27367
|
+
*/
|
|
27368
|
+
updateAuth(auth) {
|
|
27369
|
+
return this.proxyAuth.update(auth);
|
|
27370
|
+
}
|
|
26518
27371
|
};
|
|
26519
27372
|
|
|
26520
27373
|
// src/core/storage/disk.ts
|
|
@@ -26583,6 +27436,8 @@ var DiskStorage = class {
|
|
|
26583
27436
|
loadedProjectIds = /* @__PURE__ */ new Set();
|
|
26584
27437
|
// Project IDs to Store: Tracks which projectIds need to be persisted to disk
|
|
26585
27438
|
projectIdsToStore = /* @__PURE__ */ new Set();
|
|
27439
|
+
// Last Access Map: Tracks the last time a projectId was accessed
|
|
27440
|
+
lastAccessMap = /* @__PURE__ */ new Map();
|
|
26586
27441
|
// Persistence Timer
|
|
26587
27442
|
persistTimer;
|
|
26588
27443
|
// ========== Concurrency Safety ==========
|
|
@@ -26646,13 +27501,20 @@ var DiskStorage = class {
|
|
|
26646
27501
|
}
|
|
26647
27502
|
}
|
|
26648
27503
|
/**
|
|
26649
|
-
* Clean up inactive caches (based on active list)
|
|
27504
|
+
* Clean up inactive caches (based on active list and TTL)
|
|
26650
27505
|
* @param activeProjectIds List of currently active projectIds
|
|
26651
27506
|
*/
|
|
26652
27507
|
async cleanupInactiveProjects(activeProjectIds) {
|
|
26653
27508
|
const activeSet = new Set(activeProjectIds);
|
|
27509
|
+
const now = Date.now();
|
|
27510
|
+
const CACHE_TTL = 2 * 60 * 1e3;
|
|
26654
27511
|
const cachedProjectIds = Array.from(this.factsCache.keys());
|
|
26655
|
-
const inactiveProjectIds = cachedProjectIds.filter((projectId) =>
|
|
27512
|
+
const inactiveProjectIds = cachedProjectIds.filter((projectId) => {
|
|
27513
|
+
if (activeSet.has(projectId)) return false;
|
|
27514
|
+
const lastAccess = this.lastAccessMap.get(projectId) || 0;
|
|
27515
|
+
if (now - lastAccess < CACHE_TTL) return false;
|
|
27516
|
+
return true;
|
|
27517
|
+
});
|
|
26656
27518
|
if (inactiveProjectIds.length > 0) {
|
|
26657
27519
|
Logger.getInstance().info(`Cleaning up ${inactiveProjectIds.length} inactive project caches...`);
|
|
26658
27520
|
await Promise.all(
|
|
@@ -26726,6 +27588,7 @@ var DiskStorage = class {
|
|
|
26726
27588
|
this.runtimeEventsMap.delete(projectId);
|
|
26727
27589
|
this.projectIdsToStore.delete(projectId);
|
|
26728
27590
|
this.loadedProjectIds.delete(projectId);
|
|
27591
|
+
this.lastAccessMap.delete(projectId);
|
|
26729
27592
|
Logger.getInstance().info(`Cleared cache for project ${projectId}`);
|
|
26730
27593
|
}
|
|
26731
27594
|
getProjectRuntimeEvents(projectId) {
|
|
@@ -26790,6 +27653,7 @@ var DiskStorage = class {
|
|
|
26790
27653
|
* Each projectId is loaded from disk only on first access; subsequent access uses cache.
|
|
26791
27654
|
*/
|
|
26792
27655
|
async getRuntimeFacts(projectId) {
|
|
27656
|
+
this.lastAccessMap.set(projectId, Date.now());
|
|
26793
27657
|
if (this.factsCache.has(projectId)) {
|
|
26794
27658
|
return [...this.factsCache.get(projectId)];
|
|
26795
27659
|
}
|
|
@@ -26807,6 +27671,7 @@ var DiskStorage = class {
|
|
|
26807
27671
|
* Use lock protection to avoid concurrency conflicts with updateRuntimeFact.
|
|
26808
27672
|
*/
|
|
26809
27673
|
async saveRuntimeFacts(projectId, facts) {
|
|
27674
|
+
this.lastAccessMap.set(projectId, Date.now());
|
|
26810
27675
|
return this.withLock(projectId, async () => {
|
|
26811
27676
|
const limitedFacts = this.limitTraces(facts);
|
|
26812
27677
|
this.factsCache.set(projectId, limitedFacts);
|
|
@@ -26819,6 +27684,7 @@ var DiskStorage = class {
|
|
|
26819
27684
|
* Use lock protection to avoid concurrency conflicts with saveRuntimeFacts.
|
|
26820
27685
|
*/
|
|
26821
27686
|
async updateRuntimeFact(projectId, updatedTrace) {
|
|
27687
|
+
this.lastAccessMap.set(projectId, Date.now());
|
|
26822
27688
|
return this.withLock(projectId, async () => {
|
|
26823
27689
|
let traces = this.factsCache.get(projectId);
|
|
26824
27690
|
if (!traces) {
|
|
@@ -26841,14 +27707,114 @@ var DiskStorage = class {
|
|
|
26841
27707
|
}
|
|
26842
27708
|
};
|
|
26843
27709
|
|
|
27710
|
+
// src/core/services/AnonymousService.ts
|
|
27711
|
+
var import_crypto4 = __toESM(require("crypto"));
|
|
27712
|
+
var import_node_machine_id = __toESM(require_dist());
|
|
27713
|
+
var DEVICE_ID_SALT = "syncause-salt-";
|
|
27714
|
+
function getSystemDeviceId() {
|
|
27715
|
+
try {
|
|
27716
|
+
const rawDeviceId = (0, import_node_machine_id.machineIdSync)();
|
|
27717
|
+
if (!rawDeviceId || rawDeviceId.trim().length === 0) {
|
|
27718
|
+
throw new Error("Raw device ID is empty");
|
|
27719
|
+
}
|
|
27720
|
+
Logger.getInstance().info("Device ID obtained (hashed for privacy)");
|
|
27721
|
+
return import_crypto4.default.createHash("sha256").update(DEVICE_ID_SALT + rawDeviceId).digest("hex");
|
|
27722
|
+
} catch (error) {
|
|
27723
|
+
Logger.getInstance().error("Failed to get system device ID", error);
|
|
27724
|
+
throw new Error(`Failed to get device ID: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
27725
|
+
}
|
|
27726
|
+
}
|
|
27727
|
+
var AnonymousBindingService = class {
|
|
27728
|
+
// Anonymous account tracking
|
|
27729
|
+
anonymousUserId = null;
|
|
27730
|
+
boundUserId = null;
|
|
27731
|
+
deviceId = getSystemDeviceId();
|
|
27732
|
+
bindingCheckInterval = null;
|
|
27733
|
+
isAnonymousBound = false;
|
|
27734
|
+
constructor() {
|
|
27735
|
+
}
|
|
27736
|
+
/**
|
|
27737
|
+
* Start periodic scanning for anonymous account binding status
|
|
27738
|
+
* @param intervalMs Check interval in milliseconds
|
|
27739
|
+
*/
|
|
27740
|
+
async startBindingScanner(intervalMs) {
|
|
27741
|
+
this.stopBindingScanner();
|
|
27742
|
+
this.isAnonymousBound = false;
|
|
27743
|
+
Logger.getInstance().info(`Starting device binding scanner for deviceId: ${this.deviceId} with interval: ${intervalMs}ms`);
|
|
27744
|
+
const checkBinding = async () => {
|
|
27745
|
+
try {
|
|
27746
|
+
if (!this.deviceId) {
|
|
27747
|
+
Logger.getInstance().warn("Device binding scanner stopped: missing deviceId");
|
|
27748
|
+
this.stopBindingScanner();
|
|
27749
|
+
return;
|
|
27750
|
+
}
|
|
27751
|
+
const bindingData = await proxyApi.checkDeviceBinding(this.deviceId);
|
|
27752
|
+
if (bindingData) {
|
|
27753
|
+
if (this.anonymousUserId === null) {
|
|
27754
|
+
Logger.getInstance().info(`Found Anonymous UserId: ${bindingData.anonymousUserId}, bind UserId: ${bindingData.bindUserId}`);
|
|
27755
|
+
} else if (this.isAnonymousBound === false && bindingData.isBound) {
|
|
27756
|
+
Logger.getInstance().info(`Detected Bind UserId: ${bindingData.bindUserId}`);
|
|
27757
|
+
}
|
|
27758
|
+
this.anonymousUserId = bindingData.anonymousUserId;
|
|
27759
|
+
this.boundUserId = bindingData.bindUserId;
|
|
27760
|
+
this.isAnonymousBound = bindingData.isBound;
|
|
27761
|
+
if (this.isAnonymousBound) {
|
|
27762
|
+
Logger.getInstance().info("Anonymous account is bound. Stopping binding scanner.");
|
|
27763
|
+
this.stopBindingScanner();
|
|
27764
|
+
return;
|
|
27765
|
+
}
|
|
27766
|
+
}
|
|
27767
|
+
if (this.bindingCheckInterval) {
|
|
27768
|
+
this.bindingCheckInterval = setTimeout(checkBinding, intervalMs);
|
|
27769
|
+
}
|
|
27770
|
+
} catch (error) {
|
|
27771
|
+
Logger.getInstance().error("Error during device binding check:", error);
|
|
27772
|
+
if (this.bindingCheckInterval) {
|
|
27773
|
+
this.bindingCheckInterval = setTimeout(checkBinding, intervalMs);
|
|
27774
|
+
}
|
|
27775
|
+
}
|
|
27776
|
+
};
|
|
27777
|
+
this.bindingCheckInterval = setTimeout(checkBinding, 0);
|
|
27778
|
+
}
|
|
27779
|
+
/**
|
|
27780
|
+
* Stop the device binding scanner
|
|
27781
|
+
*/
|
|
27782
|
+
stopBindingScanner() {
|
|
27783
|
+
if (this.bindingCheckInterval) {
|
|
27784
|
+
clearTimeout(this.bindingCheckInterval);
|
|
27785
|
+
this.bindingCheckInterval = null;
|
|
27786
|
+
Logger.getInstance().info("Device binding scanner stopped.");
|
|
27787
|
+
}
|
|
27788
|
+
}
|
|
27789
|
+
/**
|
|
27790
|
+
* Resolve the effective userId.
|
|
27791
|
+
* If the provided userId is the anonymous account:
|
|
27792
|
+
* - returns boundUserId if it's already bound
|
|
27793
|
+
* - returns current anonymousUserId otherwise
|
|
27794
|
+
* If the provided userId is not the anonymous account, returns it as is.
|
|
27795
|
+
*/
|
|
27796
|
+
resolveEffectiveUserId(userId) {
|
|
27797
|
+
if (this.anonymousUserId === userId && this.isAnonymousBound && this.boundUserId) {
|
|
27798
|
+
return this.boundUserId;
|
|
27799
|
+
}
|
|
27800
|
+
return userId;
|
|
27801
|
+
}
|
|
27802
|
+
getAnonymousUserId() {
|
|
27803
|
+
return this.anonymousUserId;
|
|
27804
|
+
}
|
|
27805
|
+
};
|
|
27806
|
+
|
|
26844
27807
|
// src/core/services/MultiUserRuntimeFactService.ts
|
|
26845
27808
|
var MultiUserRuntimeFactService = class _MultiUserRuntimeFactService {
|
|
26846
27809
|
static instance;
|
|
26847
|
-
// <
|
|
27810
|
+
// <userId, service>
|
|
26848
27811
|
services = /* @__PURE__ */ new Map();
|
|
27812
|
+
// <llmKey, userId>
|
|
27813
|
+
llmKeyToUserId = /* @__PURE__ */ new Map();
|
|
26849
27814
|
pollingInterval = null;
|
|
26850
27815
|
// Shared DiskStorage instance for all RuntimeFactService instances
|
|
26851
27816
|
sharedDiskStorage = null;
|
|
27817
|
+
anonymousBindingService = new AnonymousBindingService();
|
|
26852
27818
|
constructor() {
|
|
26853
27819
|
}
|
|
26854
27820
|
initialize(basePath) {
|
|
@@ -26860,45 +27826,128 @@ var MultiUserRuntimeFactService = class _MultiUserRuntimeFactService {
|
|
|
26860
27826
|
}
|
|
26861
27827
|
return _MultiUserRuntimeFactService.instance;
|
|
26862
27828
|
}
|
|
26863
|
-
getOrCreateService(
|
|
26864
|
-
|
|
26865
|
-
|
|
26866
|
-
|
|
26867
|
-
|
|
27829
|
+
async getOrCreateService(auth) {
|
|
27830
|
+
const llmKey = auth.getLlmKey();
|
|
27831
|
+
let userId = this.llmKeyToUserId.get(llmKey);
|
|
27832
|
+
if (!userId) {
|
|
27833
|
+
userId = await proxyApi.fetchSession(auth) || void 0;
|
|
27834
|
+
if (userId) {
|
|
27835
|
+
Logger.getInstance().info(`Cache userId: ${userId} with key: ${llmKey.substring(0, 10)}...`);
|
|
27836
|
+
this.llmKeyToUserId.set(llmKey, userId);
|
|
26868
27837
|
}
|
|
26869
|
-
service = new RuntimeFactService(apiKey, this.sharedDiskStorage);
|
|
26870
|
-
this.services.set(apiKey, service);
|
|
26871
27838
|
}
|
|
27839
|
+
if (!userId) {
|
|
27840
|
+
throw new Error(`Failed to fetch userId for auth`);
|
|
27841
|
+
}
|
|
27842
|
+
let resolvedUserId = this.anonymousBindingService.resolveEffectiveUserId(userId);
|
|
27843
|
+
let service = this.services.get(resolvedUserId);
|
|
27844
|
+
if (service) {
|
|
27845
|
+
if (resolvedUserId === userId) {
|
|
27846
|
+
if (service.updateAuth(auth)) {
|
|
27847
|
+
Logger.getInstance().info(`Updated credentials for primary userId: ${resolvedUserId} with key: ${llmKey.substring(0, 10)}...`);
|
|
27848
|
+
}
|
|
27849
|
+
}
|
|
27850
|
+
return service;
|
|
27851
|
+
}
|
|
27852
|
+
if (resolvedUserId !== userId) {
|
|
27853
|
+
service = this.services.get(userId);
|
|
27854
|
+
if (service) {
|
|
27855
|
+
if (service.updateAuth(auth)) {
|
|
27856
|
+
Logger.getInstance().info(`Updated credentials for anonymous userId: ${userId} with key: ${llmKey.substring(0, 10)}...`);
|
|
27857
|
+
}
|
|
27858
|
+
return service;
|
|
27859
|
+
}
|
|
27860
|
+
}
|
|
27861
|
+
if (!this.sharedDiskStorage) {
|
|
27862
|
+
throw new Error("MultiUserRuntimeFactService not initialized. Call initialize() first.");
|
|
27863
|
+
}
|
|
27864
|
+
service = new RuntimeFactService(auth, this.sharedDiskStorage);
|
|
27865
|
+
this.services.set(userId, service);
|
|
27866
|
+
Logger.getInstance().info(`Created RuntimeFactService for userId: ${userId}`);
|
|
26872
27867
|
return service;
|
|
26873
27868
|
}
|
|
26874
27869
|
/**
|
|
26875
|
-
* Registers an
|
|
27870
|
+
* Registers an auth to the service. If a service for this auth doesn't exist, it will be created.
|
|
26876
27871
|
*/
|
|
26877
|
-
|
|
26878
|
-
this.getOrCreateService(
|
|
27872
|
+
async registerAuth(auth) {
|
|
27873
|
+
await this.getOrCreateService(auth);
|
|
26879
27874
|
}
|
|
26880
|
-
async startGlobalPolling(intervalMs) {
|
|
26881
|
-
|
|
26882
|
-
|
|
26883
|
-
|
|
26884
|
-
|
|
26885
|
-
|
|
26886
|
-
|
|
26887
|
-
|
|
26888
|
-
|
|
26889
|
-
|
|
26890
|
-
|
|
26891
|
-
|
|
26892
|
-
|
|
26893
|
-
|
|
26894
|
-
}
|
|
27875
|
+
async startGlobalPolling(intervalMs, bindingCheckInterval) {
|
|
27876
|
+
this.stopGlobalPolling();
|
|
27877
|
+
if (bindingCheckInterval > 0) {
|
|
27878
|
+
this.anonymousBindingService.startBindingScanner(bindingCheckInterval);
|
|
27879
|
+
}
|
|
27880
|
+
Logger.getInstance().info(`Starting global RuntimeFact polling... Interval: ${intervalMs}ms`);
|
|
27881
|
+
const scheduleNext = () => {
|
|
27882
|
+
this.pollingInterval = setTimeout(async () => {
|
|
27883
|
+
try {
|
|
27884
|
+
await this.executePollCycle();
|
|
27885
|
+
} catch (error) {
|
|
27886
|
+
Logger.getInstance().error("Critical error in poll cycle:", error);
|
|
27887
|
+
} finally {
|
|
27888
|
+
if (this.pollingInterval) scheduleNext();
|
|
26895
27889
|
}
|
|
26896
|
-
})
|
|
26897
|
-
if (this.pollingInterval) {
|
|
26898
|
-
this.pollingInterval = setTimeout(runPollCycle, intervalMs);
|
|
26899
|
-
}
|
|
27890
|
+
}, intervalMs);
|
|
26900
27891
|
};
|
|
26901
|
-
this.pollingInterval = setTimeout(
|
|
27892
|
+
this.pollingInterval = setTimeout(async () => {
|
|
27893
|
+
await this.executePollCycle();
|
|
27894
|
+
if (this.pollingInterval) scheduleNext();
|
|
27895
|
+
}, 0);
|
|
27896
|
+
}
|
|
27897
|
+
/**
|
|
27898
|
+
* Executes a single polling cycle with priority:
|
|
27899
|
+
* 1. Categorize and cleanup redundant services
|
|
27900
|
+
* 2. Poll primary services first and collect processed App IDs
|
|
27901
|
+
* 3. Poll the anonymous service last, excluding already processed App IDs
|
|
27902
|
+
*/
|
|
27903
|
+
async executePollCycle() {
|
|
27904
|
+
const anonymousUserId = this.anonymousBindingService.getAnonymousUserId();
|
|
27905
|
+
const primaryServices = [];
|
|
27906
|
+
let anonymousService = null;
|
|
27907
|
+
for (const [userId, service] of this.services.entries()) {
|
|
27908
|
+
const resolvedUserId = this.anonymousBindingService.resolveEffectiveUserId(userId);
|
|
27909
|
+
if (resolvedUserId !== userId && this.services.has(resolvedUserId)) {
|
|
27910
|
+
this.services.delete(userId);
|
|
27911
|
+
Logger.getInstance().info(`Polling: Pruned redundant anonymous service for ${userId}`);
|
|
27912
|
+
continue;
|
|
27913
|
+
}
|
|
27914
|
+
if (userId === anonymousUserId) {
|
|
27915
|
+
anonymousService = service;
|
|
27916
|
+
} else {
|
|
27917
|
+
primaryServices.push(service);
|
|
27918
|
+
}
|
|
27919
|
+
}
|
|
27920
|
+
const processedAppIds = /* @__PURE__ */ new Set();
|
|
27921
|
+
await Promise.all(primaryServices.map(async (service) => {
|
|
27922
|
+
try {
|
|
27923
|
+
await service.pollAllApps(processedAppIds);
|
|
27924
|
+
} catch (error) {
|
|
27925
|
+
Logger.getInstance().error("Error in primary service poll:", error);
|
|
27926
|
+
}
|
|
27927
|
+
}));
|
|
27928
|
+
if (anonymousService) {
|
|
27929
|
+
try {
|
|
27930
|
+
await anonymousService.pollAllApps(processedAppIds);
|
|
27931
|
+
} catch (error) {
|
|
27932
|
+
Logger.getInstance().error("Error in anonymous service poll:", error);
|
|
27933
|
+
}
|
|
27934
|
+
}
|
|
27935
|
+
if (this.sharedDiskStorage) {
|
|
27936
|
+
const globalActiveProjectIds = this.getAllActiveProjectIds();
|
|
27937
|
+
await this.sharedDiskStorage.cleanupInactiveProjects(globalActiveProjectIds);
|
|
27938
|
+
}
|
|
27939
|
+
}
|
|
27940
|
+
/**
|
|
27941
|
+
* Aggregates all active project IDs across all user services.
|
|
27942
|
+
* Used for shared DiskStorage cache cleanup.
|
|
27943
|
+
*/
|
|
27944
|
+
getAllActiveProjectIds() {
|
|
27945
|
+
const allProjectIds = /* @__PURE__ */ new Set();
|
|
27946
|
+
for (const service of this.services.values()) {
|
|
27947
|
+
const projectIds = service.getActiveProjectIds();
|
|
27948
|
+
projectIds.forEach((id) => allProjectIds.add(id));
|
|
27949
|
+
}
|
|
27950
|
+
return Array.from(allProjectIds);
|
|
26902
27951
|
}
|
|
26903
27952
|
stopGlobalPolling() {
|
|
26904
27953
|
if (this.pollingInterval) {
|
|
@@ -26912,6 +27961,7 @@ var MultiUserRuntimeFactService = class _MultiUserRuntimeFactService {
|
|
|
26912
27961
|
*/
|
|
26913
27962
|
async shutdown() {
|
|
26914
27963
|
this.stopGlobalPolling();
|
|
27964
|
+
this.anonymousBindingService.stopBindingScanner();
|
|
26915
27965
|
if (this.sharedDiskStorage) {
|
|
26916
27966
|
try {
|
|
26917
27967
|
await this.sharedDiskStorage.shutdown();
|
|
@@ -26920,28 +27970,36 @@ var MultiUserRuntimeFactService = class _MultiUserRuntimeFactService {
|
|
|
26920
27970
|
}
|
|
26921
27971
|
}
|
|
26922
27972
|
}
|
|
26923
|
-
async getRuntimeFacts(
|
|
26924
|
-
const service = this.getOrCreateService(
|
|
27973
|
+
async getRuntimeFacts(auth, projectId, searchText, matchMode = "embedding", limit2 = 10) {
|
|
27974
|
+
const service = await this.getOrCreateService(auth);
|
|
26925
27975
|
return await service.getRuntimeFacts(projectId, searchText, matchMode, limit2);
|
|
26926
27976
|
}
|
|
26927
|
-
async getAppList(
|
|
26928
|
-
const service = this.getOrCreateService(
|
|
27977
|
+
async getAppList(auth) {
|
|
27978
|
+
const service = await this.getOrCreateService(auth);
|
|
26929
27979
|
return service.getAllApps();
|
|
26930
27980
|
}
|
|
26931
|
-
async getRuntimeEvents(
|
|
26932
|
-
const service = this.getOrCreateService(
|
|
27981
|
+
async getRuntimeEvents(auth, projectId) {
|
|
27982
|
+
const service = await this.getOrCreateService(auth);
|
|
26933
27983
|
return await service.getRuntimeEvents(projectId);
|
|
26934
27984
|
}
|
|
26935
27985
|
};
|
|
26936
27986
|
|
|
26937
27987
|
// src/rpc/handler/pingHandler.ts
|
|
26938
|
-
async function pingHandler(params,
|
|
26939
|
-
if (
|
|
26940
|
-
MultiUserRuntimeFactService.getInstance().
|
|
27988
|
+
async function pingHandler(params, auth) {
|
|
27989
|
+
if (auth) {
|
|
27990
|
+
await MultiUserRuntimeFactService.getInstance().registerAuth(auth);
|
|
26941
27991
|
}
|
|
26942
27992
|
return "pong";
|
|
26943
27993
|
}
|
|
26944
27994
|
|
|
27995
|
+
// src/rpc/handler/getAppListHandler.ts
|
|
27996
|
+
async function getAppListHandler(params, auth) {
|
|
27997
|
+
if (!auth) {
|
|
27998
|
+
throw new Error("Authentication required");
|
|
27999
|
+
}
|
|
28000
|
+
return await MultiUserRuntimeFactService.getInstance().getAppList(auth);
|
|
28001
|
+
}
|
|
28002
|
+
|
|
26945
28003
|
// src/rpc/utils/errors.ts
|
|
26946
28004
|
var RpcError = class extends Error {
|
|
26947
28005
|
constructor(code, message, field, details) {
|
|
@@ -26965,16 +28023,6 @@ var RpcError = class extends Error {
|
|
|
26965
28023
|
};
|
|
26966
28024
|
|
|
26967
28025
|
// src/rpc/utils/validation.ts
|
|
26968
|
-
function validateApiKey(apiKey) {
|
|
26969
|
-
if (!apiKey) {
|
|
26970
|
-
throw new RpcError(
|
|
26971
|
-
"MISSING_API_KEY" /* MISSING_API_KEY */,
|
|
26972
|
-
"API key is required",
|
|
26973
|
-
"apiKey"
|
|
26974
|
-
);
|
|
26975
|
-
}
|
|
26976
|
-
return apiKey;
|
|
26977
|
-
}
|
|
26978
28026
|
function validateRequiredParams(params, requiredFields) {
|
|
26979
28027
|
if (!params) {
|
|
26980
28028
|
throw new RpcError(
|
|
@@ -26994,30 +28042,28 @@ function validateRequiredParams(params, requiredFields) {
|
|
|
26994
28042
|
}
|
|
26995
28043
|
}
|
|
26996
28044
|
|
|
26997
|
-
// src/rpc/handler/getAppListHandler.ts
|
|
26998
|
-
async function getAppListHandler(params, apiKey) {
|
|
26999
|
-
const validatedApiKey = validateApiKey(apiKey);
|
|
27000
|
-
return await MultiUserRuntimeFactService.getInstance().getAppList(validatedApiKey);
|
|
27001
|
-
}
|
|
27002
|
-
|
|
27003
28045
|
// src/rpc/handler/getRuntimeEventsHandler.ts
|
|
27004
|
-
async function getRuntimeEventsHandler(params,
|
|
27005
|
-
|
|
28046
|
+
async function getRuntimeEventsHandler(params, auth) {
|
|
28047
|
+
if (!auth) {
|
|
28048
|
+
throw new Error("Authentication required");
|
|
28049
|
+
}
|
|
27006
28050
|
const { projectId } = params;
|
|
27007
28051
|
validateRequiredParams({ projectId }, ["projectId"]);
|
|
27008
28052
|
return await MultiUserRuntimeFactService.getInstance().getRuntimeEvents(
|
|
27009
|
-
|
|
28053
|
+
auth,
|
|
27010
28054
|
projectId
|
|
27011
28055
|
);
|
|
27012
28056
|
}
|
|
27013
28057
|
|
|
27014
28058
|
// src/rpc/handler/getRuntimeFactsHandler.ts
|
|
27015
|
-
async function getRuntimeFactsHandler(params,
|
|
27016
|
-
|
|
28059
|
+
async function getRuntimeFactsHandler(params, auth) {
|
|
28060
|
+
if (!auth) {
|
|
28061
|
+
throw new Error("Authentication required");
|
|
28062
|
+
}
|
|
27017
28063
|
const { projectId, searchText, matchMode } = params;
|
|
27018
28064
|
validateRequiredParams({ projectId }, ["projectId"]);
|
|
27019
28065
|
return await MultiUserRuntimeFactService.getInstance().getRuntimeFacts(
|
|
27020
|
-
|
|
28066
|
+
auth,
|
|
27021
28067
|
projectId,
|
|
27022
28068
|
searchText,
|
|
27023
28069
|
matchMode
|
|
@@ -27035,11 +28081,13 @@ function formatTimestamp(timestampMilli) {
|
|
|
27035
28081
|
const seconds = String(date.getSeconds()).padStart(2, "0");
|
|
27036
28082
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
27037
28083
|
}
|
|
27038
|
-
async function searchDebugTracesHandler(params,
|
|
27039
|
-
|
|
28084
|
+
async function searchDebugTracesHandler(params, auth) {
|
|
28085
|
+
if (!auth) {
|
|
28086
|
+
throw new Error("Authentication required");
|
|
28087
|
+
}
|
|
27040
28088
|
const { projectId, query, limit: limit2 } = params;
|
|
27041
28089
|
validateRequiredParams({ projectId, query }, ["projectId", "query"]);
|
|
27042
|
-
const service = MultiUserRuntimeFactService.getInstance().getOrCreateService(
|
|
28090
|
+
const service = await MultiUserRuntimeFactService.getInstance().getOrCreateService(auth);
|
|
27043
28091
|
const results = await service.searchTraces(
|
|
27044
28092
|
query,
|
|
27045
28093
|
limit2,
|
|
@@ -27260,11 +28308,13 @@ _No SQL queries found._
|
|
|
27260
28308
|
}
|
|
27261
28309
|
|
|
27262
28310
|
// src/rpc/handler/getTraceInsightHandler.ts
|
|
27263
|
-
async function getTraceInsightHandler(params,
|
|
27264
|
-
|
|
28311
|
+
async function getTraceInsightHandler(params, auth) {
|
|
28312
|
+
if (!auth) {
|
|
28313
|
+
throw new Error("Authentication required");
|
|
28314
|
+
}
|
|
27265
28315
|
const { projectId, traceId } = params;
|
|
27266
28316
|
validateRequiredParams({ projectId, traceId }, ["projectId", "traceId"]);
|
|
27267
|
-
const service = MultiUserRuntimeFactService.getInstance().getOrCreateService(
|
|
28317
|
+
const service = await MultiUserRuntimeFactService.getInstance().getOrCreateService(auth);
|
|
27268
28318
|
const trace = await service.findTraceById(traceId, projectId);
|
|
27269
28319
|
if (!trace) {
|
|
27270
28320
|
throw new RpcError(
|
|
@@ -27518,11 +28568,13 @@ ${Array.from(new Set(allSqls)).join("\n")}
|
|
|
27518
28568
|
}
|
|
27519
28569
|
|
|
27520
28570
|
// src/rpc/handler/inspectMethodSnapshotHandler.ts
|
|
27521
|
-
async function inspectMethodSnapshotHandler(params,
|
|
27522
|
-
|
|
28571
|
+
async function inspectMethodSnapshotHandler(params, auth) {
|
|
28572
|
+
if (!auth) {
|
|
28573
|
+
throw new Error("Authentication required");
|
|
28574
|
+
}
|
|
27523
28575
|
const { projectId, traceId, className, methodName, includeSubCalls = true } = params;
|
|
27524
28576
|
validateRequiredParams({ projectId, traceId }, ["projectId", "traceId"]);
|
|
27525
|
-
const service = MultiUserRuntimeFactService.getInstance().getOrCreateService(
|
|
28577
|
+
const service = await MultiUserRuntimeFactService.getInstance().getOrCreateService(auth);
|
|
27526
28578
|
const trace = await service.findTraceById(traceId, projectId);
|
|
27527
28579
|
if (!trace) return `Trace ${traceId} not found.`;
|
|
27528
28580
|
if (!trace.invokeTree) {
|
|
@@ -27792,11 +28844,13 @@ function generateSuggestedFix(baseTrace, compareTrace) {
|
|
|
27792
28844
|
}
|
|
27793
28845
|
|
|
27794
28846
|
// src/rpc/handler/diffTraceExecutionHandler.ts
|
|
27795
|
-
async function diffTraceExecutionHandler(params,
|
|
27796
|
-
|
|
28847
|
+
async function diffTraceExecutionHandler(params, auth) {
|
|
28848
|
+
if (!auth) {
|
|
28849
|
+
throw new Error("Authentication required");
|
|
28850
|
+
}
|
|
27797
28851
|
const { projectId, baseTraceId, compareTraceId } = params;
|
|
27798
28852
|
validateRequiredParams({ projectId, baseTraceId }, ["projectId", "baseTraceId"]);
|
|
27799
|
-
const service = MultiUserRuntimeFactService.getInstance().getOrCreateService(
|
|
28853
|
+
const service = await MultiUserRuntimeFactService.getInstance().getOrCreateService(auth);
|
|
27800
28854
|
const baseTrace = await service.findTraceById(baseTraceId, projectId);
|
|
27801
28855
|
if (!baseTrace) return `Base trace ${baseTraceId} not found.`;
|
|
27802
28856
|
let compareTrace;
|
|
@@ -28083,7 +29137,7 @@ async function main() {
|
|
|
28083
29137
|
autoShutdownMinutes: config.server.autoShutdownMinutes,
|
|
28084
29138
|
httpPort: config.server.httpPort
|
|
28085
29139
|
});
|
|
28086
|
-
MultiUserRuntimeFactService.getInstance().startGlobalPolling(config.service.pollingInterval);
|
|
29140
|
+
MultiUserRuntimeFactService.getInstance().startGlobalPolling(config.service.pollingInterval, config.service.bindingCheckInterval);
|
|
28087
29141
|
let server;
|
|
28088
29142
|
if (config.server.mode === "remote") {
|
|
28089
29143
|
server = await startServer2(serverConfig, config.server.httpPort);
|