@sema-agent/server 1.229.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.
@@ -0,0 +1,134 @@
1
+ export function posIntEnv(raw, fallback, max = 3_600_000) {
2
+ if (raw === undefined || raw === "")
3
+ return fallback;
4
+ const n = Number(raw);
5
+ return Number.isInteger(n) && n > 0 && n <= max ? n : fallback;
6
+ }
7
+ export class SessionWatchRegistry {
8
+ getHead;
9
+ entries = new Map();
10
+ hotMs;
11
+ warmMs;
12
+ hotWindowMs;
13
+ maxWatched;
14
+ constructor(getHead, opts) {
15
+ this.getHead = getHead;
16
+ this.hotMs = opts?.hotMs ?? 200;
17
+ this.warmMs = opts?.warmMs ?? 2000;
18
+ this.hotWindowMs = opts?.hotWindowMs ?? 60_000;
19
+ this.maxWatched = opts?.maxWatchedSessions ?? 512;
20
+ }
21
+ watchedCount() {
22
+ return this.entries.size;
23
+ }
24
+ subscribe(sessionId, owner, onHead, onEnd) {
25
+ let e = this.entries.get(sessionId);
26
+ if (e && e.owner !== owner) {
27
+ this.dropSession(sessionId);
28
+ e = undefined;
29
+ }
30
+ if (!e) {
31
+ if (this.entries.size >= this.maxWatched)
32
+ return undefined;
33
+ e = { subs: new Set(), ends: new Map(), owner, last: undefined, rev: 0, lastChangeAt: 0, probing: false };
34
+ this.entries.set(sessionId, e);
35
+ this.arm(sessionId, e, this.hotMs);
36
+ }
37
+ e.subs.add(onHead);
38
+ e.ends.set(onHead, onEnd);
39
+ if (e.last !== undefined) {
40
+ try {
41
+ onHead(e.last);
42
+ }
43
+ catch {
44
+ }
45
+ }
46
+ return () => {
47
+ const cur = this.entries.get(sessionId);
48
+ if (cur !== e)
49
+ return;
50
+ e.subs.delete(onHead);
51
+ e.ends.delete(onHead);
52
+ if (e.subs.size === 0) {
53
+ if (e.timer)
54
+ clearTimeout(e.timer);
55
+ this.entries.delete(sessionId);
56
+ }
57
+ };
58
+ }
59
+ dropSession(sessionId) {
60
+ const e = this.entries.get(sessionId);
61
+ if (!e)
62
+ return;
63
+ if (e.timer)
64
+ clearTimeout(e.timer);
65
+ this.entries.delete(sessionId);
66
+ for (const end of e.ends.values()) {
67
+ try {
68
+ end?.();
69
+ }
70
+ catch {
71
+ }
72
+ }
73
+ }
74
+ notifyLocal(sessionId, leafId, owner) {
75
+ const e = this.entries.get(sessionId);
76
+ if (!e)
77
+ return;
78
+ if (owner !== undefined && owner !== e.owner) {
79
+ this.dropSession(sessionId);
80
+ return;
81
+ }
82
+ if (e.last === leafId)
83
+ return;
84
+ this.applyAdvance(e, leafId);
85
+ }
86
+ arm(sessionId, e, delayMs) {
87
+ e.timer = setTimeout(() => void this.probe(sessionId, e), delayMs);
88
+ e.timer.unref?.();
89
+ }
90
+ async probe(sessionId, e) {
91
+ if (this.entries.get(sessionId) !== e)
92
+ return;
93
+ if (!e.probing) {
94
+ e.probing = true;
95
+ const revAtStart = e.rev;
96
+ try {
97
+ const head = await this.getHead(sessionId);
98
+ if (this.entries.get(sessionId) !== e)
99
+ return;
100
+ if (head.owner === undefined || head.owner !== e.owner) {
101
+ this.dropSession(sessionId);
102
+ return;
103
+ }
104
+ const leafId = head.leafId ?? null;
105
+ if (e.rev === revAtStart && leafId !== e.last)
106
+ this.applyAdvance(e, leafId);
107
+ }
108
+ catch {
109
+ }
110
+ finally {
111
+ e.probing = false;
112
+ }
113
+ }
114
+ if (this.entries.get(sessionId) !== e)
115
+ return;
116
+ const hot = e.lastChangeAt !== 0 && Date.now() - e.lastChangeAt < this.hotWindowMs;
117
+ this.arm(sessionId, e, hot ? this.hotMs : this.warmMs);
118
+ }
119
+ applyAdvance(e, leafId) {
120
+ const wasKnown = e.last !== undefined;
121
+ e.last = leafId;
122
+ e.rev++;
123
+ if (wasKnown)
124
+ e.lastChangeAt = Date.now();
125
+ for (const fn of e.subs) {
126
+ try {
127
+ fn(leafId);
128
+ }
129
+ catch {
130
+ }
131
+ }
132
+ }
133
+ }
134
+ //# sourceMappingURL=session-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-watch.js","sourceRoot":"","sources":["../src/session-watch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/server",
3
- "version": "1.229.0",
3
+ "version": "1.230.0",
4
4
  "description": "Sema Server — the server/API implementation layer for Sema, wiring core, registry, model providers, and cloud agent execution. Built on @sema-agent/core.",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",
@@ -46,7 +46,7 @@
46
46
  "build:binary:run-local:darwin-arm64": "bun build --compile --target=bun-darwin-arm64 src/run-local.ts --outfile dist/run-local-darwin-arm64"
47
47
  },
48
48
  "dependencies": {
49
- "@sema-agent/core": "^1.329.0",
49
+ "@sema-agent/core": "^1.330.0",
50
50
  "@sema-agent/registry-core": "^0.10.16",
51
51
  "e2b": "^2.28.0",
52
52
  "libsodium-wrappers": "^0.8.4",