reflectt-node 0.1.3 → 0.1.4

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.
@@ -2,6 +2,9 @@
2
2
  // Copyright (c) Reflectt AI
3
3
  // ── Configuration ──────────────────────────────────────────────────────────
4
4
  const MAX_ERRORS = 20;
5
+ /** Rolling window: 5-minute buckets, keep last 1 hour */
6
+ const BUCKET_DURATION_MS = 5 * 60 * 1000;
7
+ const MAX_BUCKETS = 12; // 12 × 5 min = 1 hour
5
8
  const TRACKED_GROUPS = [
6
9
  { pattern: /^\/health/, name: 'health' },
7
10
  { pattern: /^\/bootstrap/, name: 'bootstrap' },
@@ -10,6 +13,19 @@ const TRACKED_GROUPS = [
10
13
  { pattern: /^\/openclaw/, name: 'openclaw' },
11
14
  { pattern: /^\/chat/, name: 'chat' },
12
15
  { pattern: /^\/mcp/, name: 'mcp' },
16
+ // Additional groups to reduce "other" noise
17
+ { pattern: /^\/heartbeat/, name: 'heartbeat' },
18
+ { pattern: /^\/inbox/, name: 'inbox' },
19
+ { pattern: /^\/reflections/, name: 'reflections' },
20
+ { pattern: /^\/insights/, name: 'insights' },
21
+ { pattern: /^\/hosts/, name: 'hosts' },
22
+ { pattern: /^\/presence/, name: 'presence' },
23
+ { pattern: /^\/shared/, name: 'shared' },
24
+ { pattern: /^\/avatars/, name: 'avatars' },
25
+ { pattern: /^\/dashboard/, name: 'dashboard' },
26
+ { pattern: /^\/memory/, name: 'memory' },
27
+ { pattern: /^\/preflight/, name: 'preflight' },
28
+ { pattern: /^\/policy/, name: 'policy' },
13
29
  ];
14
30
  // ── State ──────────────────────────────────────────────────────────────────
15
31
  const requestCounts = {};
@@ -18,6 +34,9 @@ const recentErrors = [];
18
34
  let totalRequests = 0;
19
35
  let totalErrors = 0;
20
36
  const startedAt = Date.now();
37
+ // Rolling window state
38
+ const rollingBuckets = [];
39
+ let currentBucket = { requests: 0, errors: 0, startedAt: Date.now() };
21
40
  // ── Core ───────────────────────────────────────────────────────────────────
22
41
  function classifyUrl(url) {
23
42
  for (const group of TRACKED_GROUPS) {
@@ -26,20 +45,35 @@ function classifyUrl(url) {
26
45
  }
27
46
  return 'other';
28
47
  }
48
+ /** Rotate rolling buckets if the current one has expired */
49
+ function rotateBuckets(now) {
50
+ if (now - currentBucket.startedAt >= BUCKET_DURATION_MS) {
51
+ rollingBuckets.push(currentBucket);
52
+ if (rollingBuckets.length > MAX_BUCKETS) {
53
+ rollingBuckets.shift();
54
+ }
55
+ currentBucket = { requests: 0, errors: 0, startedAt: now };
56
+ }
57
+ }
29
58
  /**
30
59
  * Record a request. Call from Fastify onResponse hook.
31
60
  */
32
61
  export function trackRequest(method, url, statusCode, userAgent) {
62
+ const now = Date.now();
33
63
  totalRequests++;
34
64
  const group = classifyUrl(url);
35
65
  requestCounts[group] = (requestCounts[group] || 0) + 1;
66
+ // Rolling window
67
+ rotateBuckets(now);
68
+ currentBucket.requests++;
36
69
  if (statusCode >= 400) {
37
70
  totalErrors++;
38
71
  errorCounts[group] = (errorCounts[group] || 0) + 1;
72
+ currentBucket.errors++;
39
73
  }
40
74
  if (statusCode >= 500) {
41
75
  recentErrors.push({
42
- ts: Date.now(),
76
+ ts: now,
43
77
  method,
44
78
  url: url.length > 200 ? url.slice(0, 200) + '…' : url,
45
79
  status: statusCode,
@@ -69,6 +103,27 @@ export function trackError(context, error) {
69
103
  }
70
104
  }
71
105
  // ── Metrics ────────────────────────────────────────────────────────────────
106
+ /** Compute rolling-window stats from recent buckets */
107
+ function getRollingMetrics() {
108
+ const now = Date.now();
109
+ rotateBuckets(now);
110
+ let requests = currentBucket.requests;
111
+ let errors = currentBucket.errors;
112
+ const windowStart = now - (MAX_BUCKETS * BUCKET_DURATION_MS);
113
+ for (const bucket of rollingBuckets) {
114
+ if (bucket.startedAt >= windowStart) {
115
+ requests += bucket.requests;
116
+ errors += bucket.errors;
117
+ }
118
+ }
119
+ const errorRate = requests > 0 ? Math.round((errors / requests) * 10000) / 100 : 0;
120
+ return {
121
+ requests,
122
+ errors,
123
+ errorRate,
124
+ windowMinutes: MAX_BUCKETS * (BUCKET_DURATION_MS / 60000),
125
+ };
126
+ }
72
127
  export function getRequestMetrics() {
73
128
  const uptimeMs = Date.now() - startedAt;
74
129
  const uptimeSec = uptimeMs / 1000;
@@ -76,10 +131,12 @@ export function getRequestMetrics() {
76
131
  const byGroup = {};
77
132
  for (const group of TRACKED_GROUPS) {
78
133
  const name = group.name;
79
- byGroup[name] = {
80
- requests: requestCounts[name] || 0,
81
- errors: errorCounts[name] || 0,
82
- };
134
+ const reqs = requestCounts[name] || 0;
135
+ const errs = errorCounts[name] || 0;
136
+ // Only include groups that have traffic
137
+ if (reqs > 0 || errs > 0) {
138
+ byGroup[name] = { requests: reqs, errors: errs };
139
+ }
83
140
  }
84
141
  if (requestCounts['other']) {
85
142
  byGroup['other'] = {
@@ -94,6 +151,7 @@ export function getRequestMetrics() {
94
151
  byGroup,
95
152
  recentErrors: [...recentErrors].reverse(), // Most recent first
96
153
  rps,
154
+ rolling: getRollingMetrics(),
97
155
  };
98
156
  }
99
157
  /** Reset (for testing) */
@@ -105,5 +163,7 @@ export function resetRequestMetrics() {
105
163
  for (const key of Object.keys(errorCounts))
106
164
  delete errorCounts[key];
107
165
  recentErrors.length = 0;
166
+ rollingBuckets.length = 0;
167
+ currentBucket = { requests: 0, errors: 0, startedAt: Date.now() };
108
168
  }
109
169
  //# sourceMappingURL=request-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-tracker.js","sourceRoot":"","sources":["../src/request-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-tracker.js","sourceRoot":"","sources":["../src/request-tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAA;AA6qD9D,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CA0xU7D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAA;AA6qD9D,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CA2xU7D"}
package/dist/server.js CHANGED
@@ -1895,7 +1895,7 @@ export async function createServer() {
1895
1895
  inbox: inboxManager.getStats(),
1896
1896
  request_counts: (() => {
1897
1897
  const m = getRequestMetrics();
1898
- return { total: m.total, errors: m.errors, rps: m.rps, byGroup: m.byGroup };
1898
+ return { total: m.total, errors: m.errors, rps: m.rps, byGroup: m.byGroup, rolling: m.rolling };
1899
1899
  })(),
1900
1900
  timestamp: Date.now(),
1901
1901
  };
@@ -1907,6 +1907,7 @@ export async function createServer() {
1907
1907
  total_errors: m.errors,
1908
1908
  total_requests: m.total,
1909
1909
  error_rate: m.total > 0 ? Math.round((m.errors / m.total) * 10000) / 100 : 0,
1910
+ rolling: m.rolling,
1910
1911
  recent: m.recentErrors.slice(0, 20),
1911
1912
  timestamp: Date.now(),
1912
1913
  };