@sema-agent/server 1.228.0 → 1.230.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/http/server.d.ts +4 -0
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +216 -8
- package/dist/http/server.js.map +1 -1
- package/dist/main.js +15 -0
- package/dist/main.js.map +1 -1
- package/dist/plugins/caching-session-store.d.ts +4 -0
- package/dist/plugins/caching-session-store.d.ts.map +1 -1
- package/dist/plugins/caching-session-store.js +3 -0
- package/dist/plugins/caching-session-store.js.map +1 -1
- package/dist/plugins/local-session-store.d.ts +4 -0
- package/dist/plugins/local-session-store.d.ts.map +1 -1
- package/dist/plugins/local-session-store.js +9 -0
- package/dist/plugins/local-session-store.js.map +1 -1
- package/dist/plugins/pg-session-storage.d.ts +4 -0
- package/dist/plugins/pg-session-storage.d.ts.map +1 -1
- package/dist/plugins/pg-session-storage.js +6 -0
- package/dist/plugins/pg-session-storage.js.map +1 -1
- package/dist/plugins/remote-env-ssh.d.ts +6 -0
- package/dist/plugins/remote-env-ssh.d.ts.map +1 -1
- package/dist/plugins/remote-env-ssh.js +112 -9
- package/dist/plugins/remote-env-ssh.js.map +1 -1
- package/dist/plugins/tidb-session-store.d.ts +4 -0
- package/dist/plugins/tidb-session-store.d.ts.map +1 -1
- package/dist/plugins/tidb-session-store.js +6 -0
- package/dist/plugins/tidb-session-store.js.map +1 -1
- package/dist/security.d.ts +4 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js.map +1 -1
- package/dist/session-watch.d.ts +27 -0
- package/dist/session-watch.d.ts.map +1 -0
- package/dist/session-watch.js +134 -0
- package/dist/session-watch.js.map +1 -0
- package/package.json +2 -2
package/dist/http/server.d.ts
CHANGED
|
@@ -100,6 +100,10 @@ export interface ServiceDeps {
|
|
|
100
100
|
toolApproval?: ToolApprovalCoordinator;
|
|
101
101
|
sendUserFile?: import("../capabilities/send-user-file-tool.js").SendUserFileEmitter;
|
|
102
102
|
sendFileLedger?: import("../plugins/send-file-ledger.js").SendFileLedger;
|
|
103
|
+
sessionWatch?: import("../session-watch.js").SessionWatchRegistry;
|
|
104
|
+
sessionEventsMaxConnections?: number;
|
|
105
|
+
sessionEventsHeartbeatMs?: number;
|
|
106
|
+
sessionEventsStallMs?: number;
|
|
103
107
|
capabilities?: Record<string, unknown>;
|
|
104
108
|
restartState?: () => RestartSignal | undefined;
|
|
105
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
|
package/dist/http/server.js
CHANGED
|
@@ -177,6 +177,8 @@ function bearerPresentedButUnverified(req, config) {
|
|
|
177
177
|
}
|
|
178
178
|
export function createHttpServer(deps) {
|
|
179
179
|
const idemCache = new IdempotencyCache();
|
|
180
|
+
let sseConnections = 0;
|
|
181
|
+
let sseOwnerLookups = 0;
|
|
180
182
|
const bakeSubmitLimiter = new RateLimiter(deps.config.imageBakes?.submitRateMax ?? 0, (deps.config.imageBakes?.submitRateWindowSec ?? 60) * 1000);
|
|
181
183
|
const inflightRuns = new Map();
|
|
182
184
|
const cancelledViaVerb = new Set();
|
|
@@ -581,6 +583,7 @@ export function createHttpServer(deps) {
|
|
|
581
583
|
artifacts: Boolean(deps.runStore),
|
|
582
584
|
approvals: Boolean(deps.checkpointStore),
|
|
583
585
|
sessions: Boolean(deps.sessionAudit),
|
|
586
|
+
sessionEvents: Boolean(deps.sessionWatch && deps.sessionStorage?.getLeafId && deps.sessionStorage?.ownerOf),
|
|
584
587
|
leader: Boolean(deps.leaderEndpoint),
|
|
585
588
|
memory: false,
|
|
586
589
|
memoryWrite: false,
|
|
@@ -3013,21 +3016,37 @@ export function createHttpServer(deps) {
|
|
|
3013
3016
|
{
|
|
3014
3017
|
const hm = req.method === "GET" ? /^\/v1\/sessions\/([^/]+)\/head$/.exec(url) : null;
|
|
3015
3018
|
if (hm) {
|
|
3016
|
-
const getLeafId = deps.sessionStorage?.getLeafId;
|
|
3019
|
+
const getLeafId = deps.sessionStorage?.getLeafId?.bind(deps.sessionStorage);
|
|
3017
3020
|
const ownerOf = deps.sessionStorage?.ownerOf?.bind(deps.sessionStorage);
|
|
3018
3021
|
if (!getLeafId || !ownerOf) {
|
|
3019
3022
|
sendJson(res, 501, { error: "session head probe requires a durable session store (SESSION_BACKEND=tidb|pg|local)" });
|
|
3020
3023
|
return;
|
|
3021
3024
|
}
|
|
3022
3025
|
const headSession = decodeURIComponent(hm[1]);
|
|
3023
|
-
const
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3026
|
+
const getHead = deps.sessionStorage?.getHead?.bind(deps.sessionStorage);
|
|
3027
|
+
let owner;
|
|
3028
|
+
let leafId;
|
|
3029
|
+
if (getHead) {
|
|
3030
|
+
const head = await getHead(headSession);
|
|
3031
|
+
if (head === undefined) {
|
|
3032
|
+
sendJson(res, 404, { error: "session not found" });
|
|
3033
|
+
return;
|
|
3034
|
+
}
|
|
3035
|
+
owner = head.owner;
|
|
3036
|
+
if (!runOwnerOk(req, res, owner ?? null))
|
|
3037
|
+
return;
|
|
3038
|
+
leafId = head.leafId;
|
|
3039
|
+
}
|
|
3040
|
+
else {
|
|
3041
|
+
owner = await ownerOf(headSession);
|
|
3042
|
+
if (owner === undefined) {
|
|
3043
|
+
sendJson(res, 404, { error: "session not found" });
|
|
3044
|
+
return;
|
|
3045
|
+
}
|
|
3046
|
+
if (!runOwnerOk(req, res, owner ?? null))
|
|
3047
|
+
return;
|
|
3048
|
+
leafId = await getLeafId(headSession);
|
|
3027
3049
|
}
|
|
3028
|
-
if (!runOwnerOk(req, res, owner ?? null))
|
|
3029
|
-
return;
|
|
3030
|
-
const leafId = await getLeafId(headSession);
|
|
3031
3050
|
const etag = `"${leafId ?? "empty"}"`;
|
|
3032
3051
|
if (req.headers["if-none-match"] === etag) {
|
|
3033
3052
|
res.writeHead(304, { etag }).end();
|
|
@@ -3038,6 +3057,195 @@ export function createHttpServer(deps) {
|
|
|
3038
3057
|
return;
|
|
3039
3058
|
}
|
|
3040
3059
|
}
|
|
3060
|
+
{
|
|
3061
|
+
const em = req.method === "GET" ? /^\/v1\/sessions\/([^/]+)\/events$/.exec(url) : null;
|
|
3062
|
+
if (em) {
|
|
3063
|
+
const ownerOf = deps.sessionStorage?.ownerOf?.bind(deps.sessionStorage);
|
|
3064
|
+
const watch = deps.sessionWatch;
|
|
3065
|
+
if (!deps.sessionStorage?.getLeafId || !ownerOf || !watch) {
|
|
3066
|
+
sendJson(res, 501, { error: "session events require a durable session store (SESSION_BACKEND=tidb|pg|local)" });
|
|
3067
|
+
return;
|
|
3068
|
+
}
|
|
3069
|
+
const evSession = decodeURIComponent(em[1]);
|
|
3070
|
+
if (sseConnections >= (deps.sessionEventsMaxConnections ?? 256)) {
|
|
3071
|
+
res.writeHead(503, { "retry-after": "5", "content-type": "application/json" });
|
|
3072
|
+
res.end(JSON.stringify({ error: "session-events connection cap reached — fall back to /head polling" }));
|
|
3073
|
+
return;
|
|
3074
|
+
}
|
|
3075
|
+
sseConnections++;
|
|
3076
|
+
let hb;
|
|
3077
|
+
let unsubscribe;
|
|
3078
|
+
let closed = false;
|
|
3079
|
+
const cleanup = () => {
|
|
3080
|
+
if (closed)
|
|
3081
|
+
return;
|
|
3082
|
+
closed = true;
|
|
3083
|
+
sseConnections--;
|
|
3084
|
+
if (hb)
|
|
3085
|
+
clearInterval(hb);
|
|
3086
|
+
unsubscribe?.();
|
|
3087
|
+
};
|
|
3088
|
+
res.on("close", cleanup);
|
|
3089
|
+
req.on("close", cleanup);
|
|
3090
|
+
try {
|
|
3091
|
+
const stallBound = deps.sessionEventsStallMs ?? 60_000;
|
|
3092
|
+
if (sseOwnerLookups >= 64) {
|
|
3093
|
+
cleanup();
|
|
3094
|
+
res.writeHead(503, { "retry-after": "5", "content-type": "application/json" });
|
|
3095
|
+
res.end(JSON.stringify({ error: "session-events owner-lookup concurrency cap — retry" }));
|
|
3096
|
+
return;
|
|
3097
|
+
}
|
|
3098
|
+
sseOwnerLookups++;
|
|
3099
|
+
const ownerP = ownerOf(evSession);
|
|
3100
|
+
void ownerP.catch(() => undefined).then(() => { sseOwnerLookups--; });
|
|
3101
|
+
let stallTimer;
|
|
3102
|
+
let owner;
|
|
3103
|
+
try {
|
|
3104
|
+
owner = await Promise.race([
|
|
3105
|
+
ownerP,
|
|
3106
|
+
new Promise((r) => { stallTimer = setTimeout(() => r("__stall__"), stallBound); stallTimer.unref?.(); }),
|
|
3107
|
+
]);
|
|
3108
|
+
}
|
|
3109
|
+
finally {
|
|
3110
|
+
if (stallTimer)
|
|
3111
|
+
clearTimeout(stallTimer);
|
|
3112
|
+
}
|
|
3113
|
+
if (closed)
|
|
3114
|
+
return;
|
|
3115
|
+
if (owner === "__stall__") {
|
|
3116
|
+
cleanup();
|
|
3117
|
+
res.writeHead(503, { "retry-after": "5", "content-type": "application/json" });
|
|
3118
|
+
res.end(JSON.stringify({ error: "session-events owner lookup stalled — retry" }));
|
|
3119
|
+
return;
|
|
3120
|
+
}
|
|
3121
|
+
if (owner === undefined) {
|
|
3122
|
+
cleanup();
|
|
3123
|
+
sendJson(res, 404, { error: "session not found" });
|
|
3124
|
+
return;
|
|
3125
|
+
}
|
|
3126
|
+
if (!runOwnerOk(req, res, owner ?? null)) {
|
|
3127
|
+
cleanup();
|
|
3128
|
+
return;
|
|
3129
|
+
}
|
|
3130
|
+
const q = new URL(req.url ?? url, "http://x").searchParams;
|
|
3131
|
+
const lastLeafId = q.get("lastLeafId");
|
|
3132
|
+
let first = true;
|
|
3133
|
+
let lastAccepted;
|
|
3134
|
+
let lastWritten;
|
|
3135
|
+
let writeBlocked = false;
|
|
3136
|
+
let blockedAt = 0;
|
|
3137
|
+
let pendingHead;
|
|
3138
|
+
const stallMs = deps.sessionEventsStallMs ?? 60_000;
|
|
3139
|
+
const writeRaw = (chunk) => {
|
|
3140
|
+
if (closed)
|
|
3141
|
+
return;
|
|
3142
|
+
try {
|
|
3143
|
+
const okW = res.write(chunk);
|
|
3144
|
+
if (!okW && !writeBlocked) {
|
|
3145
|
+
writeBlocked = true;
|
|
3146
|
+
blockedAt = Date.now();
|
|
3147
|
+
res.once("drain", () => {
|
|
3148
|
+
writeBlocked = false;
|
|
3149
|
+
const p = pendingHead;
|
|
3150
|
+
pendingHead = undefined;
|
|
3151
|
+
if (p && !closed && p.v !== lastWritten)
|
|
3152
|
+
doWrite(p.v);
|
|
3153
|
+
});
|
|
3154
|
+
}
|
|
3155
|
+
}
|
|
3156
|
+
catch { }
|
|
3157
|
+
};
|
|
3158
|
+
const doWrite = (leafId) => {
|
|
3159
|
+
lastWritten = leafId;
|
|
3160
|
+
writeRaw(`event: head\ndata: ${JSON.stringify({ sessionId: evSession, leafId })}\n\n`);
|
|
3161
|
+
};
|
|
3162
|
+
const emit = (leafId) => {
|
|
3163
|
+
if (closed || leafId === lastAccepted)
|
|
3164
|
+
return;
|
|
3165
|
+
lastAccepted = leafId;
|
|
3166
|
+
const suppress = first && lastLeafId !== null && lastLeafId === (leafId ?? "null");
|
|
3167
|
+
first = false;
|
|
3168
|
+
if (suppress) {
|
|
3169
|
+
lastWritten = leafId;
|
|
3170
|
+
return;
|
|
3171
|
+
}
|
|
3172
|
+
if (writeBlocked) {
|
|
3173
|
+
pendingHead = { v: leafId };
|
|
3174
|
+
if (Date.now() - blockedAt > stallMs) {
|
|
3175
|
+
cleanup();
|
|
3176
|
+
try {
|
|
3177
|
+
res.end();
|
|
3178
|
+
}
|
|
3179
|
+
catch { }
|
|
3180
|
+
}
|
|
3181
|
+
return;
|
|
3182
|
+
}
|
|
3183
|
+
doWrite(leafId);
|
|
3184
|
+
};
|
|
3185
|
+
let started = false;
|
|
3186
|
+
let preVal;
|
|
3187
|
+
const onHead = (leafId) => {
|
|
3188
|
+
if (!started)
|
|
3189
|
+
preVal = { v: leafId };
|
|
3190
|
+
else
|
|
3191
|
+
emit(leafId);
|
|
3192
|
+
};
|
|
3193
|
+
const onEnd = () => { cleanup(); try {
|
|
3194
|
+
res.end();
|
|
3195
|
+
}
|
|
3196
|
+
catch { } };
|
|
3197
|
+
unsubscribe = watch.subscribe(evSession, owner ?? null, onHead, onEnd);
|
|
3198
|
+
if (!unsubscribe) {
|
|
3199
|
+
cleanup();
|
|
3200
|
+
res.writeHead(503, { "retry-after": "5", "content-type": "application/json" });
|
|
3201
|
+
res.end(JSON.stringify({ error: "session-events probe cap reached — fall back to /head polling" }));
|
|
3202
|
+
return;
|
|
3203
|
+
}
|
|
3204
|
+
res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache, no-transform", connection: "keep-alive", "x-accel-buffering": "no" });
|
|
3205
|
+
writeRaw(": connected\n\n");
|
|
3206
|
+
started = true;
|
|
3207
|
+
if (preVal !== undefined)
|
|
3208
|
+
emit(preVal.v);
|
|
3209
|
+
const hbMs = deps.sessionEventsHeartbeatMs ?? 25_000;
|
|
3210
|
+
let ownerCheckPending = false;
|
|
3211
|
+
let ownerCheckStartedAt = 0;
|
|
3212
|
+
hb = setInterval(() => {
|
|
3213
|
+
if (closed)
|
|
3214
|
+
return;
|
|
3215
|
+
if (writeBlocked && Date.now() - blockedAt > stallMs) {
|
|
3216
|
+
onEnd();
|
|
3217
|
+
return;
|
|
3218
|
+
}
|
|
3219
|
+
if (!writeBlocked)
|
|
3220
|
+
writeRaw(": hb\n\n");
|
|
3221
|
+
if (ownerCheckPending) {
|
|
3222
|
+
if (Date.now() - ownerCheckStartedAt > stallMs)
|
|
3223
|
+
onEnd();
|
|
3224
|
+
return;
|
|
3225
|
+
}
|
|
3226
|
+
ownerCheckPending = true;
|
|
3227
|
+
ownerCheckStartedAt = Date.now();
|
|
3228
|
+
void ownerOf(evSession).then((o) => {
|
|
3229
|
+
ownerCheckPending = false;
|
|
3230
|
+
if (!closed && o !== owner)
|
|
3231
|
+
onEnd();
|
|
3232
|
+
}).catch(() => { ownerCheckPending = false; });
|
|
3233
|
+
}, hbMs);
|
|
3234
|
+
hb.unref?.();
|
|
3235
|
+
}
|
|
3236
|
+
catch (e) {
|
|
3237
|
+
cleanup();
|
|
3238
|
+
if (!res.headersSent)
|
|
3239
|
+
sendJson(res, 500, { error: `session events failed: ${e instanceof Error ? e.message : "unknown"}` });
|
|
3240
|
+
else
|
|
3241
|
+
try {
|
|
3242
|
+
res.end();
|
|
3243
|
+
}
|
|
3244
|
+
catch { }
|
|
3245
|
+
}
|
|
3246
|
+
return;
|
|
3247
|
+
}
|
|
3248
|
+
}
|
|
3041
3249
|
if (deps.sessionAudit && req.method === "GET") {
|
|
3042
3250
|
const sm = /^\/v1\/sessions\/([^/]+)$/.exec(url);
|
|
3043
3251
|
if (sm) {
|