@threadbase-sh/streamer 1.65.0 → 1.66.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 +245 -14
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +245 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +233 -2
- package/dist/index.js.map +1 -1
- package/dist/server-wiring.d.ts +2 -0
- package/dist/server-wiring.d.ts.map +1 -1
- package/dist/server.d.ts +1 -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":"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"}
|
|
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) => {
|
|
@@ -151829,6 +151837,221 @@ function pruneAgentConversations(cache) {
|
|
|
151829
151837
|
return { scanned: rows.length, pruned, missing };
|
|
151830
151838
|
}
|
|
151831
151839
|
|
|
151840
|
+
// src/services/host-pressure/hostPressure.ts
|
|
151841
|
+
var import_os16 = require("os");
|
|
151842
|
+
var import_perf_hooks = require("perf_hooks");
|
|
151843
|
+
var HOST_PRESSURE_SAMPLE_MS = 5e3;
|
|
151844
|
+
var HOST_PRESSURE_BARS = {
|
|
151845
|
+
memFreeRatio: {
|
|
151846
|
+
enterElevated: 0.15,
|
|
151847
|
+
leaveElevated: 0.17,
|
|
151848
|
+
enterCritical: 0.08,
|
|
151849
|
+
leaveCritical: 0.15
|
|
151850
|
+
},
|
|
151851
|
+
eventLoopP99Ms: {
|
|
151852
|
+
enterElevated: 100,
|
|
151853
|
+
leaveElevated: 80,
|
|
151854
|
+
enterCritical: 250,
|
|
151855
|
+
leaveCritical: 100
|
|
151856
|
+
},
|
|
151857
|
+
loadPerCpu: {
|
|
151858
|
+
enterElevated: 1.25,
|
|
151859
|
+
leaveElevated: 1.05,
|
|
151860
|
+
enterCritical: 2,
|
|
151861
|
+
leaveCritical: 1.25
|
|
151862
|
+
},
|
|
151863
|
+
// win32 has no loadavg. Busy ratio from os.cpus()[].times deltas is 0–1, so
|
|
151864
|
+
// it cannot reuse loadPerCpu's 2.0 critical bar. Reason on the wire stays `load`.
|
|
151865
|
+
cpuBusy: {
|
|
151866
|
+
enterElevated: 0.85,
|
|
151867
|
+
leaveElevated: 0.7,
|
|
151868
|
+
enterCritical: 0.97,
|
|
151869
|
+
leaveCritical: 0.85
|
|
151870
|
+
},
|
|
151871
|
+
liveAgentsPair: 4
|
|
151872
|
+
};
|
|
151873
|
+
var REASON_ORDER = ["memory", "event_loop", "load", "agents"];
|
|
151874
|
+
var RANK = { ok: 0, elevated: 1, critical: 2 };
|
|
151875
|
+
function worst(levels) {
|
|
151876
|
+
return levels.reduce(
|
|
151877
|
+
(acc, level) => RANK[level] > RANK[acc] ? level : acc,
|
|
151878
|
+
"ok"
|
|
151879
|
+
);
|
|
151880
|
+
}
|
|
151881
|
+
function schmittLowIsWorse(value, previous, enterElevated, leaveElevated, enterCritical, leaveCritical) {
|
|
151882
|
+
if (previous === "critical") {
|
|
151883
|
+
if (value < leaveCritical) return "critical";
|
|
151884
|
+
if (value < leaveElevated) return "elevated";
|
|
151885
|
+
return "ok";
|
|
151886
|
+
}
|
|
151887
|
+
if (previous === "elevated") {
|
|
151888
|
+
if (value < enterCritical) return "critical";
|
|
151889
|
+
if (value < leaveElevated) return "elevated";
|
|
151890
|
+
return "ok";
|
|
151891
|
+
}
|
|
151892
|
+
if (value < enterCritical) return "critical";
|
|
151893
|
+
if (value < enterElevated) return "elevated";
|
|
151894
|
+
return "ok";
|
|
151895
|
+
}
|
|
151896
|
+
function schmittHighIsWorse(value, previous, enterElevated, leaveElevated, enterCritical, leaveCritical) {
|
|
151897
|
+
if (previous === "critical") {
|
|
151898
|
+
if (value > leaveCritical) return "critical";
|
|
151899
|
+
if (value > leaveElevated) return "elevated";
|
|
151900
|
+
return "ok";
|
|
151901
|
+
}
|
|
151902
|
+
if (previous === "elevated") {
|
|
151903
|
+
if (value > enterCritical) return "critical";
|
|
151904
|
+
if (value > leaveElevated) return "elevated";
|
|
151905
|
+
return "ok";
|
|
151906
|
+
}
|
|
151907
|
+
if (value > enterCritical) return "critical";
|
|
151908
|
+
if (value > enterElevated) return "elevated";
|
|
151909
|
+
return "ok";
|
|
151910
|
+
}
|
|
151911
|
+
function timesTotal(times) {
|
|
151912
|
+
return times.user + times.nice + times.sys + times.idle + times.irq;
|
|
151913
|
+
}
|
|
151914
|
+
function hostPressureOs(platform3) {
|
|
151915
|
+
if (platform3 === "darwin" || platform3 === "linux" || platform3 === "win32") return platform3;
|
|
151916
|
+
return void 0;
|
|
151917
|
+
}
|
|
151918
|
+
function cpuBusyRatio(previous, next) {
|
|
151919
|
+
if (!previous || previous.length === 0 || next.length === 0 || previous.length !== next.length) {
|
|
151920
|
+
return 0;
|
|
151921
|
+
}
|
|
151922
|
+
let idle = 0;
|
|
151923
|
+
let total = 0;
|
|
151924
|
+
for (let i = 0; i < next.length; i++) {
|
|
151925
|
+
const dt2 = timesTotal(next[i]) - timesTotal(previous[i]);
|
|
151926
|
+
if (dt2 <= 0) continue;
|
|
151927
|
+
total += dt2;
|
|
151928
|
+
idle += Math.max(0, next[i].idle - previous[i].idle);
|
|
151929
|
+
}
|
|
151930
|
+
if (total <= 0) return 0;
|
|
151931
|
+
return 1 - idle / total;
|
|
151932
|
+
}
|
|
151933
|
+
function classifyHostPressure(sample, previous, platform3) {
|
|
151934
|
+
const memRaw = schmittLowIsWorse(
|
|
151935
|
+
sample.memFreeRatio,
|
|
151936
|
+
previous,
|
|
151937
|
+
HOST_PRESSURE_BARS.memFreeRatio.enterElevated,
|
|
151938
|
+
HOST_PRESSURE_BARS.memFreeRatio.leaveElevated,
|
|
151939
|
+
HOST_PRESSURE_BARS.memFreeRatio.enterCritical,
|
|
151940
|
+
HOST_PRESSURE_BARS.memFreeRatio.leaveCritical
|
|
151941
|
+
);
|
|
151942
|
+
const mem = platform3 === "darwin" && memRaw === "critical" ? "elevated" : memRaw;
|
|
151943
|
+
const eventLoop = schmittHighIsWorse(
|
|
151944
|
+
sample.eventLoopP99Ms,
|
|
151945
|
+
previous,
|
|
151946
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.enterElevated,
|
|
151947
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.leaveElevated,
|
|
151948
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.enterCritical,
|
|
151949
|
+
HOST_PRESSURE_BARS.eventLoopP99Ms.leaveCritical
|
|
151950
|
+
);
|
|
151951
|
+
const ncpu = sample.ncpu > 0 ? sample.ncpu : 1;
|
|
151952
|
+
const windows = platform3 === "win32";
|
|
151953
|
+
const loadValue = windows ? sample.cpuBusyRatio ?? 0 : sample.load1 / ncpu;
|
|
151954
|
+
const loadBars = windows ? HOST_PRESSURE_BARS.cpuBusy : HOST_PRESSURE_BARS.loadPerCpu;
|
|
151955
|
+
const load = schmittHighIsWorse(
|
|
151956
|
+
loadValue,
|
|
151957
|
+
previous,
|
|
151958
|
+
loadBars.enterElevated,
|
|
151959
|
+
loadBars.leaveElevated,
|
|
151960
|
+
loadBars.enterCritical,
|
|
151961
|
+
loadBars.leaveCritical
|
|
151962
|
+
);
|
|
151963
|
+
const resourceLevel = worst([mem, eventLoop, load]);
|
|
151964
|
+
const agentsPair = sample.liveAgents >= HOST_PRESSURE_BARS.liveAgentsPair && resourceLevel !== "ok";
|
|
151965
|
+
const level = resourceLevel;
|
|
151966
|
+
const firing = [];
|
|
151967
|
+
if (mem !== "ok") firing.push("memory");
|
|
151968
|
+
if (eventLoop !== "ok") firing.push("event_loop");
|
|
151969
|
+
if (load !== "ok") firing.push("load");
|
|
151970
|
+
if (agentsPair) firing.push("agents");
|
|
151971
|
+
const reasons = REASON_ORDER.filter((reason) => firing.includes(reason));
|
|
151972
|
+
return { level, reasons };
|
|
151973
|
+
}
|
|
151974
|
+
var HostPressureMonitor = class {
|
|
151975
|
+
constructor(opts) {
|
|
151976
|
+
this.opts = opts;
|
|
151977
|
+
}
|
|
151978
|
+
opts;
|
|
151979
|
+
timer = null;
|
|
151980
|
+
level = "ok";
|
|
151981
|
+
lastWarning = null;
|
|
151982
|
+
start() {
|
|
151983
|
+
this.opts.histogram?.enable();
|
|
151984
|
+
if (this.timer) return;
|
|
151985
|
+
const intervalMs = this.opts.intervalMs ?? HOST_PRESSURE_SAMPLE_MS;
|
|
151986
|
+
this.timer = setInterval(() => this.tick(), intervalMs);
|
|
151987
|
+
this.timer.unref?.();
|
|
151988
|
+
}
|
|
151989
|
+
tick() {
|
|
151990
|
+
const sample = this.opts.readSample();
|
|
151991
|
+
const platform3 = this.opts.platform ?? process.platform;
|
|
151992
|
+
const classified = classifyHostPressure(sample, this.level, platform3);
|
|
151993
|
+
if (classified.level === this.level) return;
|
|
151994
|
+
this.level = classified.level;
|
|
151995
|
+
const updatedAt = (this.opts.now ?? (() => /* @__PURE__ */ new Date()))().toISOString();
|
|
151996
|
+
if (classified.level === "ok") {
|
|
151997
|
+
this.lastWarning = null;
|
|
151998
|
+
this.opts.wsHub.broadcast({ type: "host_pressure_cleared", updatedAt });
|
|
151999
|
+
return;
|
|
152000
|
+
}
|
|
152001
|
+
const os3 = hostPressureOs(platform3);
|
|
152002
|
+
const message = {
|
|
152003
|
+
type: "host_pressure",
|
|
152004
|
+
level: classified.level,
|
|
152005
|
+
reasons: classified.reasons,
|
|
152006
|
+
liveAgents: sample.liveAgents,
|
|
152007
|
+
updatedAt,
|
|
152008
|
+
...os3 ? { os: os3 } : {}
|
|
152009
|
+
};
|
|
152010
|
+
this.lastWarning = message;
|
|
152011
|
+
this.opts.wsHub.broadcast(message);
|
|
152012
|
+
}
|
|
152013
|
+
wsMessage() {
|
|
152014
|
+
return this.lastWarning;
|
|
152015
|
+
}
|
|
152016
|
+
dispose() {
|
|
152017
|
+
if (this.timer) {
|
|
152018
|
+
clearInterval(this.timer);
|
|
152019
|
+
this.timer = null;
|
|
152020
|
+
}
|
|
152021
|
+
this.opts.histogram?.disable();
|
|
152022
|
+
}
|
|
152023
|
+
};
|
|
152024
|
+
function createHostPressureMonitor(wsHub, liveAgents) {
|
|
152025
|
+
const histogram = (0, import_perf_hooks.monitorEventLoopDelay)({ resolution: 20 });
|
|
152026
|
+
const windows = process.platform === "win32";
|
|
152027
|
+
let prevCpuTimes = null;
|
|
152028
|
+
const monitor = new HostPressureMonitor({
|
|
152029
|
+
wsHub,
|
|
152030
|
+
histogram,
|
|
152031
|
+
readSample: () => {
|
|
152032
|
+
const eventLoopP99Ms = histogram.percentile(99) / 1e6;
|
|
152033
|
+
histogram.reset();
|
|
152034
|
+
const total = (0, import_os16.totalmem)();
|
|
152035
|
+
const cpuList = (0, import_os16.cpus)();
|
|
152036
|
+
const sample = {
|
|
152037
|
+
liveAgents: liveAgents(),
|
|
152038
|
+
memFreeRatio: total > 0 ? (0, import_os16.freemem)() / total : 1,
|
|
152039
|
+
eventLoopP99Ms,
|
|
152040
|
+
load1: (0, import_os16.loadavg)()[0],
|
|
152041
|
+
ncpu: cpuList.length
|
|
152042
|
+
};
|
|
152043
|
+
if (windows) {
|
|
152044
|
+
const cpuTimes = cpuList.map((cpu) => cpu.times);
|
|
152045
|
+
sample.cpuBusyRatio = cpuBusyRatio(prevCpuTimes, cpuTimes);
|
|
152046
|
+
prevCpuTimes = cpuTimes;
|
|
152047
|
+
}
|
|
152048
|
+
return sample;
|
|
152049
|
+
}
|
|
152050
|
+
});
|
|
152051
|
+
monitor.start();
|
|
152052
|
+
return monitor;
|
|
152053
|
+
}
|
|
152054
|
+
|
|
151832
152055
|
// src/services/push/expoPushSender.ts
|
|
151833
152056
|
init_logger();
|
|
151834
152057
|
var log5 = getLogger("expo-push");
|
|
@@ -153372,7 +153595,7 @@ function discoveredToResponse(d, conversationId) {
|
|
|
153372
153595
|
|
|
153373
153596
|
// src/session-watchers.ts
|
|
153374
153597
|
var import_fs38 = require("fs");
|
|
153375
|
-
var
|
|
153598
|
+
var import_os17 = require("os");
|
|
153376
153599
|
var import_path34 = require("path");
|
|
153377
153600
|
init_logger();
|
|
153378
153601
|
var SessionWatchers = class {
|
|
@@ -153455,7 +153678,7 @@ var SessionWatchers = class {
|
|
|
153455
153678
|
// was passed to Claude via --session-id so the filename matches from the start.
|
|
153456
153679
|
watchForJsonl(sessionId, projectPath) {
|
|
153457
153680
|
const encoded = projectPath.replace(/[/\\:.]/g, "-");
|
|
153458
|
-
const projectsDir = (0, import_path34.join)((0,
|
|
153681
|
+
const projectsDir = (0, import_path34.join)((0, import_os17.homedir)(), ".claude", "projects", encoded);
|
|
153459
153682
|
const expectedFile = `${sessionId}.jsonl`;
|
|
153460
153683
|
const filePath = (0, import_path34.join)(projectsDir, expectedFile);
|
|
153461
153684
|
const deadline = Date.now() + 12e4;
|
|
@@ -153922,6 +154145,7 @@ var StreamerServer = class {
|
|
|
153922
154145
|
wsToClientId = /* @__PURE__ */ new Map();
|
|
153923
154146
|
cache = null;
|
|
153924
154147
|
cacheMonitor = null;
|
|
154148
|
+
hostPressureMonitor = null;
|
|
153925
154149
|
projectsRepo = null;
|
|
153926
154150
|
conversationsRepo = null;
|
|
153927
154151
|
sessionsRepo = null;
|
|
@@ -153986,7 +154210,7 @@ var StreamerServer = class {
|
|
|
153986
154210
|
this.skipStartupWarmup = config2.skipStartupWarmup ?? false;
|
|
153987
154211
|
this.autoResumeOnBoot = config2.autoResumeOnBoot ?? false;
|
|
153988
154212
|
this.scanProfiles = config2.scanProfiles;
|
|
153989
|
-
this.codexRoots = config2.codexRoots ?? [(0, import_path35.join)((0,
|
|
154213
|
+
this.codexRoots = config2.codexRoots ?? [(0, import_path35.join)((0, import_os18.homedir)(), ".codex", "sessions")];
|
|
153990
154214
|
this.ptyGracePeriodMs = config2.ptyGracePeriodMs ?? DEFAULT_PTY_GRACE_PERIOD_MS;
|
|
153991
154215
|
this.defaultSystemPrompt = config2.defaultSystemPrompt ?? DEFAULT_SYSTEM_PROMPT;
|
|
153992
154216
|
const flagResolution = resolveFeatureFlags({
|
|
@@ -154003,7 +154227,7 @@ var StreamerServer = class {
|
|
|
154003
154227
|
this.claudeFlagsPersistable = config2.claudeFlags === void 0;
|
|
154004
154228
|
this.claudeFlags = config2.claudeFlags ?? loadClaudeFlags();
|
|
154005
154229
|
this.claudeExtraArgs = config2.claudeExtraArgs ?? loadClaudeExtraArgs();
|
|
154006
|
-
this.cacheDir = config2.cacheDir ?? loadCacheDir() ?? (0, import_path35.join)((0,
|
|
154230
|
+
this.cacheDir = config2.cacheDir ?? loadCacheDir() ?? (0, import_path35.join)((0, import_os18.homedir)(), ".threadbase", "cache");
|
|
154007
154231
|
this.runtimeDbPath = resolveRuntimeDbPath(config2.runtimeDbPath);
|
|
154008
154232
|
this.tailSize = config2.tailSize ?? loadTailSize() ?? 10;
|
|
154009
154233
|
this.directoryDebounceMs = parseDirScanDebounceEnv(process.env.THREADBASE_DIR_SCAN_DEBOUNCE_MS) ?? config2.directoryScanDebounceMs ?? 1e3;
|
|
@@ -154272,6 +154496,7 @@ var StreamerServer = class {
|
|
|
154272
154496
|
// reset-and-rescan, and tests swap methods on the server instance.
|
|
154273
154497
|
cache: () => this.cache,
|
|
154274
154498
|
cacheMonitor: () => this.cacheMonitor,
|
|
154499
|
+
hostPressureMonitor: () => this.hostPressureMonitor,
|
|
154275
154500
|
pushRepo: () => this.pushRepo,
|
|
154276
154501
|
liveActivityPushEnabled: () => this.liveActivityNotifier !== null,
|
|
154277
154502
|
devicesRepo: () => this.devicesRepo,
|
|
@@ -154442,14 +154667,14 @@ var StreamerServer = class {
|
|
|
154442
154667
|
}
|
|
154443
154668
|
this.apnsClient = new ApnsClient(creds);
|
|
154444
154669
|
const sender = new LiveActivitySender(this.apnsClient, pushRepo);
|
|
154445
|
-
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154446
|
-
this.liveActivityNotifier = new LiveActivityNotifier(sender, serverId, (0,
|
|
154670
|
+
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)();
|
|
154671
|
+
this.liveActivityNotifier = new LiveActivityNotifier(sender, serverId, (0, import_os18.hostname)());
|
|
154447
154672
|
this.liveActivityRenewal = new LiveActivityRenewalScheduler({
|
|
154448
154673
|
repo: pushRepo,
|
|
154449
154674
|
sender,
|
|
154450
154675
|
sessionStore: this.sessionStore,
|
|
154451
154676
|
serverId,
|
|
154452
|
-
serverLabel: (0,
|
|
154677
|
+
serverLabel: (0, import_os18.hostname)()
|
|
154453
154678
|
});
|
|
154454
154679
|
this.liveActivityRenewal.start();
|
|
154455
154680
|
this.log.info("Live Activity push enabled", {
|
|
@@ -154469,7 +154694,7 @@ var StreamerServer = class {
|
|
|
154469
154694
|
*/
|
|
154470
154695
|
initWaitingInputPush(pushRepo) {
|
|
154471
154696
|
const sender = new ExpoPushSender(pushRepo, process.env.THREADBASE_EXPO_ACCESS_TOKEN);
|
|
154472
|
-
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154697
|
+
const serverId = process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)();
|
|
154473
154698
|
this.waitingInputNotifier = new WaitingInputNotifier(
|
|
154474
154699
|
sender,
|
|
154475
154700
|
serverId,
|
|
@@ -154699,7 +154924,7 @@ var StreamerServer = class {
|
|
|
154699
154924
|
let sessions = null;
|
|
154700
154925
|
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
154701
154926
|
const transport = await connectOrSpawnHost({
|
|
154702
|
-
instanceId: process.env.THREADBASE_INSTANCE_ID ?? (0,
|
|
154927
|
+
instanceId: process.env.THREADBASE_INSTANCE_ID ?? (0, import_os18.hostname)()
|
|
154703
154928
|
});
|
|
154704
154929
|
try {
|
|
154705
154930
|
sessions = await this.ptyManager.useRemoteRunner(transport);
|
|
@@ -154746,6 +154971,10 @@ var StreamerServer = class {
|
|
|
154746
154971
|
this.idleReaperTimer = setInterval(() => this.reapIdleSessions(), IDLE_REAP_SWEEP_MS);
|
|
154747
154972
|
this.idleReaperTimer.unref?.();
|
|
154748
154973
|
}
|
|
154974
|
+
this.hostPressureMonitor = createHostPressureMonitor(
|
|
154975
|
+
this.wsHub,
|
|
154976
|
+
() => this.ptyAttachedIds().size
|
|
154977
|
+
);
|
|
154749
154978
|
const warmUp = new Promise((resolveWarm) => {
|
|
154750
154979
|
{
|
|
154751
154980
|
this.log.info(`Streamer server listening on port ${port}`, {
|
|
@@ -155058,6 +155287,8 @@ var StreamerServer = class {
|
|
|
155058
155287
|
clearInterval(this.idleReaperTimer);
|
|
155059
155288
|
this.idleReaperTimer = null;
|
|
155060
155289
|
}
|
|
155290
|
+
this.hostPressureMonitor?.dispose();
|
|
155291
|
+
this.hostPressureMonitor = null;
|
|
155061
155292
|
this.lastAgentChunkAt.clear();
|
|
155062
155293
|
this.terminalSeq.clear();
|
|
155063
155294
|
if (this.ptyManager.isRemote()) this.ptyManager.dispose();
|
|
@@ -155251,7 +155482,7 @@ var StreamerServer = class {
|
|
|
155251
155482
|
deviceToken: device.deviceToken,
|
|
155252
155483
|
capabilities: device.capabilities,
|
|
155253
155484
|
publicUrl: this.publicUrl,
|
|
155254
|
-
machineName: (0,
|
|
155485
|
+
machineName: (0, import_os18.hostname)(),
|
|
155255
155486
|
serverVersion: getVersion()
|
|
155256
155487
|
})
|
|
155257
155488
|
);
|
|
@@ -155285,7 +155516,7 @@ var StreamerServer = class {
|
|
|
155285
155516
|
// Released builds that predate that fix DO still adopt it, so changing
|
|
155286
155517
|
// this value moves where old devices talk. It is not a free field.
|
|
155287
155518
|
publicUrl: this.publicUrl,
|
|
155288
|
-
machineName: (0,
|
|
155519
|
+
machineName: (0, import_os18.hostname)(),
|
|
155289
155520
|
...device && {
|
|
155290
155521
|
deviceId: device.deviceId,
|
|
155291
155522
|
deviceToken: device.deviceToken,
|