@threadbase-sh/streamer 1.65.0 → 1.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/routes/misc.routes.d.ts.map +1 -1
- package/dist/api/types/api-deps.d.ts +2 -0
- package/dist/api/types/api-deps.d.ts.map +1 -1
- package/dist/cli.cjs +259 -14
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +259 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +247 -2
- package/dist/index.js.map +1 -1
- package/dist/server-wiring.d.ts +3 -0
- package/dist/server-wiring.d.ts.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/services/host-pressure/hostPressure.d.ts +83 -0
- package/dist/services/host-pressure/hostPressure.d.ts.map +1 -0
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.routes.d.ts","sourceRoot":"","sources":["../../../src/api/routes/misc.routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiDjD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,OAAO,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,cAAc,CAahB;AAED,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAkBvC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,cAAc,CAmB3E;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAe9D;AAYD,eAAO,MAAM,gBAAgB,SACrB,IAAI,CACR,OAAO,EACL,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,UAAU,GACV,yBAAyB,GACzB,oBAAoB,CACvB,
|
|
1
|
+
{"version":3,"file":"misc.routes.d.ts","sourceRoot":"","sources":["../../../src/api/routes/misc.routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiDjD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,OAAO,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,cAAc,CAahB;AAED,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAkBvC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,cAAc,CAmB3E;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAe9D;AAYD,eAAO,MAAM,gBAAgB,SACrB,IAAI,CACR,OAAO,EACL,WAAW,GACX,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,UAAU,GACV,yBAAyB,GACzB,oBAAoB,CACvB,wDAgOF,CAAC"}
|
|
@@ -16,6 +16,7 @@ import type { RuntimeStore } from "../../db/runtime-store";
|
|
|
16
16
|
import type { FeatureFlagDefinition, FeatureFlagId, FeatureFlagSource, ResolvedFeatureFlags } from "../../feature-flags";
|
|
17
17
|
import type { LiveSessionManager } from "../../live-session-manager";
|
|
18
18
|
import type { CacheIntegrityMonitor } from "../../services/cache-integrity/cacheIntegrityMonitor";
|
|
19
|
+
import type { HostPressureMonitor } from "../../services/host-pressure/hostPressure";
|
|
19
20
|
import type { Principal } from "../../services/security/capabilities";
|
|
20
21
|
import type { ReconcileVerdict } from "../../services/sessions/reconcileSessions";
|
|
21
22
|
import type { SessionStore } from "../../session-store";
|
|
@@ -52,6 +53,7 @@ export type ApiDeps = {
|
|
|
52
53
|
wsHub: WSHub;
|
|
53
54
|
cache: () => ConversationCache | null;
|
|
54
55
|
cacheMonitor: () => CacheIntegrityMonitor | null;
|
|
56
|
+
hostPressureMonitor: () => HostPressureMonitor | null;
|
|
55
57
|
/** Push registration + delivery state (C7). Null when the cache DB is unavailable. */
|
|
56
58
|
pushRepo: () => PushRepository | null;
|
|
57
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-deps.d.ts","sourceRoot":"","sources":["../../../src/api/types/api-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3D,iBAAiB,EAAE,MAAM;QACvB,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;QACpC,MAAM,EAAE,gBAAgB,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,oBAAoB,EAAE,CACpB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,KAC1B;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAChF,kBAAkB,EAAE,MAAM;QACxB,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;QAC3C,MAAM,EAAE,oBAAoB,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KACnD,CAAC;IACF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC;IACjD,sFAAsF;IACtF,QAAQ,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC;IACtC;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,OAAO,CAAC;IAEvC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAC9C,iBAAiB,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACxD,YAAY,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAC9C,iBAAiB,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACxD,8FAA8F;IAC9F,YAAY,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACxC,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,yBAAyB,GAAG,IAAI,CAAC;IAC5D,8EAA8E;IAC9E,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACrD,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAElC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,mBAAmB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACjE,qBAAqB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAClE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/D,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,oBAAoB,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qBAAqB,EAAE,CACrB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sBAAsB,EAAE,CACtB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,YAAY,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,kBAAkB,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF,uBAAuB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,qBAAqB,EAAE,CACrB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,cAAc,EACnB,WAAW,CAAC,EAAE,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5D,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAClE,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACnE,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,kBAAkB,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAI1E,YAAY,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IACpF,aAAa,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;IAEvC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC9C,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"api-deps.d.ts","sourceRoot":"","sources":["../../../src/api/types/api-deps.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.cjs
CHANGED
|
@@ -132336,7 +132336,7 @@ var import_events2 = require("events");
|
|
|
132336
132336
|
var import_fs39 = require("fs");
|
|
132337
132337
|
var import_promises16 = require("fs/promises");
|
|
132338
132338
|
var import_http = require("http");
|
|
132339
|
-
var
|
|
132339
|
+
var import_os18 = require("os");
|
|
132340
132340
|
var import_path35 = require("path");
|
|
132341
132341
|
|
|
132342
132342
|
// src/agent/agent-client.ts
|
|
@@ -135120,7 +135120,7 @@ function redactPath(path2) {
|
|
|
135120
135120
|
function worstStatus(checks) {
|
|
135121
135121
|
const rank = { ok: 0, unknown: 1, degraded: 2, failed: 3 };
|
|
135122
135122
|
return checks.reduce(
|
|
135123
|
-
(
|
|
135123
|
+
(worst2, c) => rank[c.status] > rank[worst2] ? c.status : worst2,
|
|
135124
135124
|
"ok"
|
|
135125
135125
|
);
|
|
135126
135126
|
}
|
|
@@ -136034,7 +136034,12 @@ var createMiscRoutes = (deps) => {
|
|
|
136034
136034
|
// Whether to encrypt to this server. Additive, same contract as `push`:
|
|
136035
136035
|
// absent means an older server, which a client must read as "unknown" and
|
|
136036
136036
|
// resolve as today's plaintext path — never as a reason to fail.
|
|
136037
|
-
e2ee: describeE2eeCapability(deps.featureFlagsConfig().values.e2ee)
|
|
136037
|
+
e2ee: describeE2eeCapability(deps.featureFlagsConfig().values.e2ee),
|
|
136038
|
+
// This build samples cheap host signals and pushes `host_pressure` when
|
|
136039
|
+
// the box is starved. Additive capability flag only — live readings stay
|
|
136040
|
+
// off this polled endpoint. Absent means an older server that never
|
|
136041
|
+
// samples. Informational: pressure never holds, kills, or refuses sessions.
|
|
136042
|
+
hostPressure: true
|
|
136038
136043
|
});
|
|
136039
136044
|
});
|
|
136040
136045
|
app.get("/api/profiles", (c) => c.json([]));
|
|
@@ -151155,6 +151160,7 @@ function createApiDeps(deps) {
|
|
|
151155
151160
|
wsHub: deps.wsHub,
|
|
151156
151161
|
cache: () => deps.cache(),
|
|
151157
151162
|
cacheMonitor: () => deps.cacheMonitor(),
|
|
151163
|
+
hostPressureMonitor: () => deps.hostPressureMonitor(),
|
|
151158
151164
|
pushRepo: () => deps.pushRepo(),
|
|
151159
151165
|
liveActivityPushEnabled: () => deps.liveActivityPushEnabled(),
|
|
151160
151166
|
devicesRepo: () => deps.devicesRepo(),
|
|
@@ -151205,6 +151211,8 @@ function createApiDeps(deps) {
|
|
|
151205
151211
|
}
|
|
151206
151212
|
const alertMsg = deps.cacheMonitor()?.wsMessage();
|
|
151207
151213
|
if (alertMsg) deps.wsHub.unicast(ws2, alertMsg);
|
|
151214
|
+
const pressureMsg = deps.hostPressureMonitor()?.wsMessage();
|
|
151215
|
+
if (pressureMsg) deps.wsHub.unicast(ws2, pressureMsg);
|
|
151208
151216
|
},
|
|
151209
151217
|
handleWsMessage: async (ws2, raw2, principal) => {
|
|
151210
151218
|
const deny = (type, required2) => {
|
|
@@ -151275,6 +151283,13 @@ function createApiDeps(deps) {
|
|
|
151275
151283
|
);
|
|
151276
151284
|
}
|
|
151277
151285
|
}
|
|
151286
|
+
if (msg.type === "unsubscribe_session" && typeof msg.sessionId === "string") {
|
|
151287
|
+
if (!wsAllows(principal, "history:read")) {
|
|
151288
|
+
deny(msg.type, "history:read");
|
|
151289
|
+
return;
|
|
151290
|
+
}
|
|
151291
|
+
deps.removeSessionSubscriber(msg.sessionId, ws2);
|
|
151292
|
+
}
|
|
151278
151293
|
if (msg.type === "hold_session" && typeof msg.sessionId === "string") {
|
|
151279
151294
|
if (!wsAllows(principal, "session:control")) {
|
|
151280
151295
|
deny(msg.type, "session:control");
|
|
@@ -151829,6 +151844,221 @@ function pruneAgentConversations(cache) {
|
|
|
151829
151844
|
return { scanned: rows.length, pruned, missing };
|
|
151830
151845
|
}
|
|
151831
151846
|
|
|
151847
|
+
// src/services/host-pressure/hostPressure.ts
|
|
151848
|
+
var import_os16 = require("os");
|
|
151849
|
+
var import_perf_hooks = require("perf_hooks");
|
|
151850
|
+
var HOST_PRESSURE_SAMPLE_MS = 5e3;
|
|
151851
|
+
var HOST_PRESSURE_BARS = {
|
|
151852
|
+
memFreeRatio: {
|
|
151853
|
+
enterElevated: 0.15,
|
|
151854
|
+
leaveElevated: 0.17,
|
|
151855
|
+
enterCritical: 0.08,
|
|
151856
|
+
leaveCritical: 0.15
|
|
151857
|
+
},
|
|
151858
|
+
eventLoopP99Ms: {
|
|
151859
|
+
enterElevated: 100,
|
|
151860
|
+
leaveElevated: 80,
|
|
151861
|
+
enterCritical: 250,
|
|
151862
|
+
leaveCritical: 100
|
|
151863
|
+
},
|
|
151864
|
+
loadPerCpu: {
|
|
151865
|
+
enterElevated: 1.25,
|
|
151866
|
+
leaveElevated: 1.05,
|
|
151867
|
+
enterCritical: 2,
|
|
151868
|
+
leaveCritical: 1.25
|
|
151869
|
+
},
|
|
151870
|
+
// win32 has no loadavg. Busy ratio from os.cpus()[].times deltas is 0–1, so
|
|
151871
|
+
// it cannot reuse loadPerCpu's 2.0 critical bar. Reason on the wire stays `load`.
|
|
151872
|
+
cpuBusy: {
|
|
151873
|
+
enterElevated: 0.85,
|
|
151874
|
+
leaveElevated: 0.7,
|
|
151875
|
+
enterCritical: 0.97,
|
|
151876
|
+
leaveCritical: 0.85
|
|
151877
|
+
},
|
|
151878
|
+
liveAgentsPair: 4
|
|
151879
|
+
};
|
|
151880
|
+
var REASON_ORDER = ["memory", "event_loop", "load", "agents"];
|
|
151881
|
+
var RANK = { ok: 0, elevated: 1, critical: 2 };
|
|
151882
|
+
function worst(levels) {
|
|
151883
|
+
return levels.reduce(
|
|
151884
|
+
(acc, level) => RANK[level] > RANK[acc] ? level : acc,
|
|
151885
|
+
"ok"
|
|
151886
|
+
);
|
|
151887
|
+
}
|
|
151888
|
+
function schmittLowIsWorse(value, previous, enterElevated, leaveElevated, enterCritical, leaveCritical) {
|
|
151889
|
+
if (previous === "critical") {
|
|
151890
|
+
if (value < leaveCritical) return "critical";
|
|
151891
|
+
if (value < leaveElevated) return "elevated";
|
|
151892
|
+
return "ok";
|
|
151893
|
+
}
|
|
151894
|
+
if (previous === "elevated") {
|
|
151895
|
+
if (value < enterCritical) return "critical";
|
|
151896
|
+
if (value < leaveElevated) return "elevated";
|
|
151897
|
+
return "ok";
|
|
151898
|
+
}
|
|
151899
|
+
if (value < enterCritical) return "critical";
|
|
151900
|
+
if (value < enterElevated) return "elevated";
|
|
151901
|
+
return "ok";
|
|
151902
|
+
}
|
|
151903
|
+
function schmittHighIsWorse(value, previous, enterElevated, leaveElevated, enterCritical, leaveCritical) {
|
|
151904
|
+
if (previous === "critical") {
|
|
151905
|
+
if (value > leaveCritical) return "critical";
|
|
151906
|
+
if (value > leaveElevated) return "elevated";
|
|
151907
|
+
return "ok";
|
|
151908
|
+
}
|
|
151909
|
+
if (previous === "elevated") {
|
|
151910
|
+
if (value > enterCritical) return "critical";
|
|
151911
|
+
if (value > leaveElevated) return "elevated";
|
|
151912
|
+
return "ok";
|
|
151913
|
+
}
|
|
151914
|
+
if (value > enterCritical) return "critical";
|
|
151915
|
+
if (value > enterElevated) return "elevated";
|
|
151916
|
+
return "ok";
|
|
151917
|
+
}
|
|
151918
|
+
function timesTotal(times) {
|
|
151919
|
+
return times.user + times.nice + times.sys + times.idle + times.irq;
|
|
151920
|
+
}
|
|
151921
|
+
function hostPressureOs(platform3) {
|
|
151922
|
+
if (platform3 === "darwin" || platform3 === "linux" || platform3 === "win32") return platform3;
|
|
151923
|
+
return void 0;
|
|
151924
|
+
}
|
|
151925
|
+
function cpuBusyRatio(previous, next) {
|
|
151926
|
+
if (!previous || previous.length === 0 || next.length === 0 || previous.length !== next.length) {
|
|
151927
|
+
return 0;
|
|
151928
|
+
}
|
|
151929
|
+
let idle = 0;
|
|
151930
|
+
let total = 0;
|
|
151931
|
+
for (let i = 0; i < next.length; i++) {
|
|
151932
|
+
const dt2 = timesTotal(next[i]) - timesTotal(previous[i]);
|
|
151933
|
+
if (dt2 <= 0) continue;
|
|
151934
|
+
total += dt2;
|
|
151935
|
+
idle += Math.max(0, next[i].idle - previous[i].idle);
|
|
151936
|
+
}
|
|
151937
|
+
if (total <= 0) return 0;
|
|
151938
|
+
return 1 - idle / total;
|
|
151939
|
+
}
|
|
151940
|
+
function classifyHostPressure(sample, previous, platform3) {
|
|
151941
|
+
const memRaw = schmittLowIsWorse(
|
|
151942
|
+
sample.memFreeRatio,
|
|
151943
|
+
previous,
|
|
151944
|
+
HOST_PRESSURE_BARS.memFreeRatio.enterElevated,
|
|
151945
|
+
HOST_PRESSURE_BARS.memFreeRatio.leaveElevated,
|
|
151946
|
+
HOST_PRESSURE_BARS.memFreeRatio.enterCritical,
|
|
151947
|
+
HOST_PRESSURE_BARS.memFreeRatio.leaveCritical
|
|
151948
|
+
);
|
|
151949
|
+
const mem = platform3 === "darwin" && memRaw === "critical" ? "elevated" : memRaw;
|
|
151950
|
+
const eventLoop = schmittHighIsWorse(
|
|
151951
|
+
sample.eventLoopP99Ms,
|
|
151952
|
+
previous,
|
|
151953
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.enterElevated,
|
|
151954
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.leaveElevated,
|
|
151955
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.enterCritical,
|
|
151956
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.leaveCritical
|
|
151957
|
+
);
|
|
151958
|
+
const ncpu = sample.ncpu > 0 ? sample.ncpu : 1;
|
|
151959
|
+
const windows = platform3 === "win32";
|
|
151960
|
+
const loadValue = windows ? sample.cpuBusyRatio ?? 0 : sample.load1 / ncpu;
|
|
151961
|
+
const loadBars = windows ? HOST_PRESSURE_BARS.cpuBusy : HOST_PRESSURE_BARS.loadPerCpu;
|
|
151962
|
+
const load = schmittHighIsWorse(
|
|
151963
|
+
loadValue,
|
|
151964
|
+
previous,
|
|
151965
|
+
loadBars.enterElevated,
|
|
151966
|
+
loadBars.leaveElevated,
|
|
151967
|
+
loadBars.enterCritical,
|
|
151968
|
+
loadBars.leaveCritical
|
|
151969
|
+
);
|
|
151970
|
+
const resourceLevel = worst([mem, eventLoop, load]);
|
|
151971
|
+
const agentsPair = sample.liveAgents >= HOST_PRESSURE_BARS.liveAgentsPair && resourceLevel !== "ok";
|
|
151972
|
+
const level = resourceLevel;
|
|
151973
|
+
const firing = [];
|
|
151974
|
+
if (mem !== "ok") firing.push("memory");
|
|
151975
|
+
if (eventLoop !== "ok") firing.push("event_loop");
|
|
151976
|
+
if (load !== "ok") firing.push("load");
|
|
151977
|
+
if (agentsPair) firing.push("agents");
|
|
151978
|
+
const reasons = REASON_ORDER.filter((reason) => firing.includes(reason));
|
|
151979
|
+
return { level, reasons };
|
|
151980
|
+
}
|
|
151981
|
+
var HostPressureMonitor = class {
|
|
151982
|
+
constructor(opts) {
|
|
151983
|
+
this.opts = opts;
|
|
151984
|
+
}
|
|
151985
|
+
opts;
|
|
151986
|
+
timer = null;
|
|
151987
|
+
level = "ok";
|
|
151988
|
+
lastWarning = null;
|
|
151989
|
+
start() {
|
|
151990
|
+
this.opts.histogram?.enable();
|
|
151991
|
+
if (this.timer) return;
|
|
151992
|
+
const intervalMs = this.opts.intervalMs ?? HOST_PRESSURE_SAMPLE_MS;
|
|
151993
|
+
this.timer = setInterval(() => this.tick(), intervalMs);
|
|
151994
|
+
this.timer.unref?.();
|
|
151995
|
+
}
|
|
151996
|
+
tick() {
|
|
151997
|
+
const sample = this.opts.readSample();
|
|
151998
|
+
const platform3 = this.opts.platform ?? process.platform;
|
|
151999
|
+
const classified = classifyHostPressure(sample, this.level, platform3);
|
|
152000
|
+
if (classified.level === this.level) return;
|
|
152001
|
+
this.level = classified.level;
|
|
152002
|
+
const updatedAt = (this.opts.now ?? (() => /* @__PURE__ */ new Date()))().toISOString();
|
|
152003
|
+
if (classified.level === "ok") {
|
|
152004
|
+
this.lastWarning = null;
|
|
152005
|
+
this.opts.wsHub.broadcast({ type: "host_pressure_cleared", updatedAt });
|
|
152006
|
+
return;
|
|
152007
|
+
}
|
|
152008
|
+
const os3 = hostPressureOs(platform3);
|
|
152009
|
+
const message = {
|
|
152010
|
+
type: "host_pressure",
|
|
152011
|
+
level: classified.level,
|
|
152012
|
+
reasons: classified.reasons,
|
|
152013
|
+
liveAgents: sample.liveAgents,
|
|
152014
|
+
updatedAt,
|
|
152015
|
+
...os3 ? { os: os3 } : {}
|
|
152016
|
+
};
|
|
152017
|
+
this.lastWarning = message;
|
|
152018
|
+
this.opts.wsHub.broadcast(message);
|
|
152019
|
+
}
|
|
152020
|
+
wsMessage() {
|
|
152021
|
+
return this.lastWarning;
|
|
152022
|
+
}
|
|
152023
|
+
dispose() {
|
|
152024
|
+
if (this.timer) {
|
|
152025
|
+
clearInterval(this.timer);
|
|
152026
|
+
this.timer = null;
|
|
152027
|
+
}
|
|
152028
|
+
this.opts.histogram?.disable();
|
|
152029
|
+
}
|
|
152030
|
+
};
|
|
152031
|
+
function createHostPressureMonitor(wsHub, liveAgents) {
|
|
152032
|
+
const histogram = (0, import_perf_hooks.monitorEventLoopDelay)({ resolution: 20 });
|
|
152033
|
+
const windows = process.platform === "win32";
|
|
152034
|
+
let prevCpuTimes = null;
|
|
152035
|
+
const monitor = new HostPressureMonitor({
|
|
152036
|
+
wsHub,
|
|
152037
|
+
histogram,
|
|
152038
|
+
readSample: () => {
|
|
152039
|
+
const eventLoopP99Ms = histogram.percentile(99) / 1e6;
|
|
152040
|
+
histogram.reset();
|
|
152041
|
+
const total = (0, import_os16.totalmem)();
|
|
152042
|
+
const cpuList = (0, import_os16.cpus)();
|
|
152043
|
+
const sample = {
|
|
152044
|
+
liveAgents: liveAgents(),
|
|
152045
|
+
memFreeRatio: total > 0 ? (0, import_os16.freemem)() / total : 1,
|
|
152046
|
+
eventLoopP99Ms,
|
|
152047
|
+
load1: (0, import_os16.loadavg)()[0],
|
|
152048
|
+
ncpu: cpuList.length
|
|
152049
|
+
};
|
|
152050
|
+
if (windows) {
|
|
152051
|
+
const cpuTimes = cpuList.map((cpu) => cpu.times);
|
|
152052
|
+
sample.cpuBusyRatio = cpuBusyRatio(prevCpuTimes, cpuTimes);
|
|
152053
|
+
prevCpuTimes = cpuTimes;
|
|
152054
|
+
}
|
|
152055
|
+
return sample;
|
|
152056
|
+
}
|
|
152057
|
+
});
|
|
152058
|
+
monitor.start();
|
|
152059
|
+
return monitor;
|
|
152060
|
+
}
|
|
152061
|
+
|
|
151832
152062
|
// src/services/push/expoPushSender.ts
|
|
151833
152063
|
init_logger();
|
|
151834
152064
|
var log5 = getLogger("expo-push");
|
|
@@ -153372,7 +153602,7 @@ function discoveredToResponse(d, conversationId) {
|
|
|
153372
153602
|
|
|
153373
153603
|
// src/session-watchers.ts
|
|
153374
153604
|
var import_fs38 = require("fs");
|
|
153375
|
-
var
|
|
153605
|
+
var import_os17 = require("os");
|
|
153376
153606
|
var import_path34 = require("path");
|
|
153377
153607
|
init_logger();
|
|
153378
153608
|
var SessionWatchers = class {
|
|
@@ -153455,7 +153685,7 @@ var SessionWatchers = class {
|
|
|
153455
153685
|
// was passed to Claude via --session-id so the filename matches from the start.
|
|
153456
153686
|
watchForJsonl(sessionId, projectPath) {
|
|
153457
153687
|
const encoded = projectPath.replace(/[/\\:.]/g, "-");
|
|
153458
|
-
const projectsDir = (0, import_path34.join)((0,
|
|
153688
|
+
const projectsDir = (0, import_path34.join)((0, import_os17.homedir)(), ".claude", "projects", encoded);
|
|
153459
153689
|
const expectedFile = `${sessionId}.jsonl`;
|
|
153460
153690
|
const filePath = (0, import_path34.join)(projectsDir, expectedFile);
|
|
153461
153691
|
const deadline = Date.now() + 12e4;
|
|
@@ -153922,6 +154152,7 @@ var StreamerServer = class {
|
|
|
153922
154152
|
wsToClientId = /* @__PURE__ */ new Map();
|
|
153923
154153
|
cache = null;
|
|
153924
154154
|
cacheMonitor = null;
|
|
154155
|
+
hostPressureMonitor = null;
|
|
153925
154156
|
projectsRepo = null;
|
|
153926
154157
|
conversationsRepo = null;
|
|
153927
154158
|
sessionsRepo = null;
|
|
@@ -153986,7 +154217,7 @@ var StreamerServer = class {
|
|
|
153986
154217
|
this.skipStartupWarmup = config2.skipStartupWarmup ?? false;
|
|
153987
154218
|
this.autoResumeOnBoot = config2.autoResumeOnBoot ?? false;
|
|
153988
154219
|
this.scanProfiles = config2.scanProfiles;
|
|
153989
|
-
this.codexRoots = config2.codexRoots ?? [(0, import_path35.join)((0,
|
|
154220
|
+
this.codexRoots = config2.codexRoots ?? [(0, import_path35.join)((0, import_os18.homedir)(), ".codex", "sessions")];
|
|
153990
154221
|
this.ptyGracePeriodMs = config2.ptyGracePeriodMs ?? DEFAULT_PTY_GRACE_PERIOD_MS;
|
|
153991
154222
|
this.defaultSystemPrompt = config2.defaultSystemPrompt ?? DEFAULT_SYSTEM_PROMPT;
|
|
153992
154223
|
const flagResolution = resolveFeatureFlags({
|
|
@@ -154003,7 +154234,7 @@ var StreamerServer = class {
|
|
|
154003
154234
|
this.claudeFlagsPersistable = config2.claudeFlags === void 0;
|
|
154004
154235
|
this.claudeFlags = config2.claudeFlags ?? loadClaudeFlags();
|
|
154005
154236
|
this.claudeExtraArgs = config2.claudeExtraArgs ?? loadClaudeExtraArgs();
|
|
154006
|
-
this.cacheDir = config2.cacheDir ?? loadCacheDir() ?? (0, import_path35.join)((0,
|
|
154237
|
+
this.cacheDir = config2.cacheDir ?? loadCacheDir() ?? (0, import_path35.join)((0, import_os18.homedir)(), ".threadbase", "cache");
|
|
154007
154238
|
this.runtimeDbPath = resolveRuntimeDbPath(config2.runtimeDbPath);
|
|
154008
154239
|
this.tailSize = config2.tailSize ?? loadTailSize() ?? 10;
|
|
154009
154240
|
this.directoryDebounceMs = parseDirScanDebounceEnv(process.env.THREADBASE_DIR_SCAN_DEBOUNCE_MS) ?? config2.directoryScanDebounceMs ?? 1e3;
|
|
@@ -154272,6 +154503,7 @@ var StreamerServer = class {
|
|
|
154272
154503
|
// reset-and-rescan, and tests swap methods on the server instance.
|
|
154273
154504
|
cache: () => this.cache,
|
|
154274
154505
|
cacheMonitor: () => this.cacheMonitor,
|
|
154506
|
+
hostPressureMonitor: () => this.hostPressureMonitor,
|
|
154275
154507
|
pushRepo: () => this.pushRepo,
|
|
154276
154508
|
liveActivityPushEnabled: () => this.liveActivityNotifier !== null,
|
|
154277
154509
|
devicesRepo: () => this.devicesRepo,
|
|
@@ -154287,6 +154519,7 @@ var StreamerServer = class {
|
|
|
154287
154519
|
withReconciledLifecycle: (sessions) => this.withReconciledLifecycle(sessions),
|
|
154288
154520
|
currentWarmupState: () => this.currentWarmupState(),
|
|
154289
154521
|
addSessionSubscriber: (sessionId, ws2) => this.addSessionSubscriber(sessionId, ws2),
|
|
154522
|
+
removeSessionSubscriber: (sessionId, ws2) => this.removeSessionSubscriber(sessionId, ws2),
|
|
154290
154523
|
startGraceTimer: (sessionId, delayMs) => this.startGraceTimer(sessionId, delayMs),
|
|
154291
154524
|
armHoldWhenIdle: (sessionId) => this.armHoldWhenIdle(sessionId),
|
|
154292
154525
|
handleSessionsCount: (res) => this.handleSessionsCount(res),
|
|
@@ -154416,6 +154649,12 @@ var StreamerServer = class {
|
|
|
154416
154649
|
);
|
|
154417
154650
|
}
|
|
154418
154651
|
}
|
|
154652
|
+
removeSessionSubscriber(sessionId, ws2) {
|
|
154653
|
+
const subs = this.sessionSubscribers.get(sessionId);
|
|
154654
|
+
if (!subs) return;
|
|
154655
|
+
subs.delete(ws2);
|
|
154656
|
+
if (subs.size === 0) this.sessionSubscribers.delete(sessionId);
|
|
154657
|
+
}
|
|
154419
154658
|
/**
|
|
154420
154659
|
* Bring up Live Activity push, if credentials are present (Feature 12).
|
|
154421
154660
|
*
|
|
@@ -154442,14 +154681,14 @@ var StreamerServer = class {
|
|
|
154442
154681
|
}
|
|
154443
154682
|
this.apnsClient = new ApnsClient(creds);
|
|
154444
154683
|
const sender = new LiveActivitySender(this.apnsClient, pushRepo);
|
|
154445
|
-
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154446
|
-
this.liveActivityNotifier = new LiveActivityNotifier(sender, serverId, (0,
|
|
154684
|
+
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)();
|
|
154685
|
+
this.liveActivityNotifier = new LiveActivityNotifier(sender, serverId, (0, import_os18.hostname)());
|
|
154447
154686
|
this.liveActivityRenewal = new LiveActivityRenewalScheduler({
|
|
154448
154687
|
repo: pushRepo,
|
|
154449
154688
|
sender,
|
|
154450
154689
|
sessionStore: this.sessionStore,
|
|
154451
154690
|
serverId,
|
|
154452
|
-
serverLabel: (0,
|
|
154691
|
+
serverLabel: (0, import_os18.hostname)()
|
|
154453
154692
|
});
|
|
154454
154693
|
this.liveActivityRenewal.start();
|
|
154455
154694
|
this.log.info("Live Activity push enabled", {
|
|
@@ -154469,7 +154708,7 @@ var StreamerServer = class {
|
|
|
154469
154708
|
*/
|
|
154470
154709
|
initWaitingInputPush(pushRepo) {
|
|
154471
154710
|
const sender = new ExpoPushSender(pushRepo, process.env.THREADBASE_EXPO_ACCESS_TOKEN);
|
|
154472
|
-
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154711
|
+
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)();
|
|
154473
154712
|
this.waitingInputNotifier = new WaitingInputNotifier(
|
|
154474
154713
|
sender,
|
|
154475
154714
|
serverId,
|
|
@@ -154699,7 +154938,7 @@ var StreamerServer = class {
|
|
|
154699
154938
|
let sessions = null;
|
|
154700
154939
|
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
154701
154940
|
const transport = await connectOrSpawnHost({
|
|
154702
|
-
instanceId: process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154941
|
+
instanceId: process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)()
|
|
154703
154942
|
});
|
|
154704
154943
|
try {
|
|
154705
154944
|
sessions = await this.ptyManager.useRemoteRunner(transport);
|
|
@@ -154746,6 +154985,10 @@ var StreamerServer = class {
|
|
|
154746
154985
|
this.idleReaperTimer = setInterval(() => this.reapIdleSessions(), IDLE_REAP_SWEEP_MS);
|
|
154747
154986
|
this.idleReaperTimer.unref?.();
|
|
154748
154987
|
}
|
|
154988
|
+
this.hostPressureMonitor = createHostPressureMonitor(
|
|
154989
|
+
this.wsHub,
|
|
154990
|
+
() => this.ptyAttachedIds().size
|
|
154991
|
+
);
|
|
154749
154992
|
const warmUp = new Promise((resolveWarm) => {
|
|
154750
154993
|
{
|
|
154751
154994
|
this.log.info(`Streamer server listening on port ${port}`, {
|
|
@@ -155058,6 +155301,8 @@ var StreamerServer = class {
|
|
|
155058
155301
|
clearInterval(this.idleReaperTimer);
|
|
155059
155302
|
this.idleReaperTimer = null;
|
|
155060
155303
|
}
|
|
155304
|
+
this.hostPressureMonitor?.dispose();
|
|
155305
|
+
this.hostPressureMonitor = null;
|
|
155061
155306
|
this.lastAgentChunkAt.clear();
|
|
155062
155307
|
this.terminalSeq.clear();
|
|
155063
155308
|
if (this.ptyManager.isRemote()) this.ptyManager.dispose();
|
|
@@ -155251,7 +155496,7 @@ var StreamerServer = class {
|
|
|
155251
155496
|
deviceToken: device.deviceToken,
|
|
155252
155497
|
capabilities: device.capabilities,
|
|
155253
155498
|
publicUrl: this.publicUrl,
|
|
155254
|
-
machineName: (0,
|
|
155499
|
+
machineName: (0, import_os18.hostname)(),
|
|
155255
155500
|
serverVersion: getVersion()
|
|
155256
155501
|
})
|
|
155257
155502
|
);
|
|
@@ -155285,7 +155530,7 @@ var StreamerServer = class {
|
|
|
155285
155530
|
// Released builds that predate that fix DO still adopt it, so changing
|
|
155286
155531
|
// this value moves where old devices talk. It is not a free field.
|
|
155287
155532
|
publicUrl: this.publicUrl,
|
|
155288
|
-
machineName: (0,
|
|
155533
|
+
machineName: (0, import_os18.hostname)(),
|
|
155289
155534
|
...device && {
|
|
155290
155535
|
deviceId: device.deviceId,
|
|
155291
155536
|
deviceToken: device.deviceToken,
|