openclaw-observability 2026.3.21 → 2026.3.23

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.
Files changed (43) hide show
  1. package/dist/config.d.ts +11 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +6 -2
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +12 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +805 -98
  8. package/dist/index.js.map +1 -1
  9. package/dist/redaction.d.ts.map +1 -1
  10. package/dist/redaction.js +8 -1
  11. package/dist/redaction.js.map +1 -1
  12. package/dist/security/scanner.d.ts +15 -1
  13. package/dist/security/scanner.d.ts.map +1 -1
  14. package/dist/security/scanner.js +148 -11
  15. package/dist/security/scanner.js.map +1 -1
  16. package/dist/security/types.d.ts +1 -0
  17. package/dist/security/types.d.ts.map +1 -1
  18. package/dist/security/types.js +1 -0
  19. package/dist/security/types.js.map +1 -1
  20. package/dist/storage/duckdb-local-writer.d.ts +2 -1
  21. package/dist/storage/duckdb-local-writer.d.ts.map +1 -1
  22. package/dist/storage/duckdb-local-writer.js +20 -7
  23. package/dist/storage/duckdb-local-writer.js.map +1 -1
  24. package/dist/storage/mysql-writer.d.ts +3 -1
  25. package/dist/storage/mysql-writer.d.ts.map +1 -1
  26. package/dist/storage/mysql-writer.js +11 -6
  27. package/dist/storage/mysql-writer.js.map +1 -1
  28. package/dist/types.d.ts +3 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js +3 -0
  31. package/dist/types.js.map +1 -1
  32. package/dist/web/api.d.ts +2 -2
  33. package/dist/web/api.d.ts.map +1 -1
  34. package/dist/web/api.js +121 -57
  35. package/dist/web/api.js.map +1 -1
  36. package/dist/web/routes.d.ts +7 -3
  37. package/dist/web/routes.d.ts.map +1 -1
  38. package/dist/web/routes.js +176 -25
  39. package/dist/web/routes.js.map +1 -1
  40. package/dist/web/ui.js +1190 -141
  41. package/dist/web/ui.js.map +1 -1
  42. package/openclaw.plugin.json +2 -2
  43. package/package.json +1 -1
@@ -3,32 +3,68 @@
3
3
  * Observability panel HTTP route registration
4
4
  * Mounts API and UI pages on the OpenClaw Gateway
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
6
39
  Object.defineProperty(exports, "__esModule", { value: true });
7
40
  exports.registerAuditRoutes = registerAuditRoutes;
41
+ const fs = __importStar(require("node:fs"));
42
+ const os = __importStar(require("node:os"));
43
+ const path = __importStar(require("node:path"));
8
44
  const api_1 = require("./api");
9
45
  const ui_1 = require("./ui");
10
46
  /**
11
47
  * Register all observability panel HTTP routes.
12
- * Auth is required: requests must provide ?token=... or Authorization: Bearer ...
13
- * matching the requiredToken (from plugin ui.accessToken, or gateway.auth.token, or built-in default).
48
+ * When requiredToken is set (from ~/.openclaw/openclaw.json gateway.auth.token), require ?token= or Authorization: Bearer.
49
+ * When requiredToken is missing or empty, no auth allow all.
14
50
  */
15
- function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
16
- const token = typeof requiredToken === 'string' && requiredToken.length > 0 ? requiredToken : 'openclaw-observability-default';
17
- // Single prefix route handles all requests; auth: 'plugin' so gateway does not block ?token= in URL
51
+ function registerAuditRoutes(registerHttpRoute, writer, requiredToken, securityControl) {
52
+ const token = typeof requiredToken === 'string' && requiredToken.length > 0 ? requiredToken : undefined;
18
53
  registerHttpRoute({
19
54
  path: '/plugins/observability',
20
55
  handler: async (req, res) => {
21
56
  try {
22
57
  const url = parseUrl(req);
23
58
  const path = url.pathname;
24
- // Always require auth: ?token= or Authorization: Bearer must match requiredToken
25
- const queryToken = (url.searchParams.get('token') ?? '').trim();
26
- const authHeader = (req.headers['authorization'] ?? req.headers['Authorization'] ?? '');
27
- const bearer = authHeader.startsWith('Bearer ') ? authHeader.slice(7).trim() : '';
28
- const valid = queryToken === token || bearer === token;
29
- if (!valid) {
30
- sendJson(res, 401, { error: { message: 'Unauthorized', type: 'unauthorized' } });
31
- return true;
59
+ if (token) {
60
+ const queryToken = (url.searchParams.get('token') ?? '').trim();
61
+ const authHeader = (req.headers['authorization'] ?? req.headers['Authorization'] ?? '');
62
+ const bearer = authHeader.startsWith('Bearer ') ? authHeader.slice(7).trim() : '';
63
+ const valid = queryToken === token || bearer === token;
64
+ if (!valid) {
65
+ sendJson(res, 401, { error: { message: 'Unauthorized', type: 'unauthorized' } });
66
+ return true;
67
+ }
32
68
  }
33
69
  // Non-API paths return UI HTML directly (no database needed)
34
70
  if (!path.startsWith('/plugins/observability/api/')) {
@@ -43,6 +79,21 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
43
79
  return;
44
80
  }
45
81
  // ---------- API routes ----------
82
+ // GET /plugins/observability/api/media?path=...
83
+ if (path === '/plugins/observability/api/media') {
84
+ const requested = url.searchParams.get('path') || '';
85
+ const mediaPath = resolveMediaPath(requested);
86
+ if (!mediaPath) {
87
+ sendJson(res, 400, { error: 'Invalid media path' });
88
+ return;
89
+ }
90
+ if (!fs.existsSync(mediaPath)) {
91
+ sendJson(res, 404, { error: 'Media not found' });
92
+ return;
93
+ }
94
+ sendBinaryFile(res, mediaPath);
95
+ return;
96
+ }
46
97
  // GET /plugins/observability/api/stats
47
98
  if (path === '/plugins/observability/api/stats') {
48
99
  const stats = await (0, api_1.getStats)(pool);
@@ -51,8 +102,8 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
51
102
  }
52
103
  // GET /plugins/observability/api/sessions
53
104
  if (path === '/plugins/observability/api/sessions') {
54
- const page = intParam(url, 'page', 1);
55
- const limit = intParam(url, 'limit', 20);
105
+ const page = intParam(url, 'page', 1, 1);
106
+ const limit = intParam(url, 'limit', 20, 1);
56
107
  const userId = url.searchParams.get('user_id') || undefined;
57
108
  const model = url.searchParams.get('model') || undefined;
58
109
  const sessionId = url.searchParams.get('sessionId') || undefined;
@@ -76,8 +127,8 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
76
127
  }
77
128
  // GET /plugins/observability/api/actions
78
129
  if (path === '/plugins/observability/api/actions') {
79
- const page = intParam(url, 'page', 1);
80
- const limit = intParam(url, 'limit', 50);
130
+ const page = intParam(url, 'page', 1, 1);
131
+ const limit = intParam(url, 'limit', 50, 1);
81
132
  const actionType = url.searchParams.get('action_type') || undefined;
82
133
  const sessionId = url.searchParams.get('session_id') || undefined;
83
134
  const result = await (0, api_1.getActions)(pool, { page, limit, actionType, sessionId });
@@ -91,10 +142,40 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
91
142
  sendJson(res, 200, stats);
92
143
  return;
93
144
  }
145
+ // GET /plugins/observability/api/security/config
146
+ if (path === '/plugins/observability/api/security/config' && req.method === 'GET') {
147
+ if (!securityControl) {
148
+ sendJson(res, 503, { error: 'Security control unavailable' });
149
+ return;
150
+ }
151
+ sendJson(res, 200, { config: securityControl.getConfig() });
152
+ return;
153
+ }
154
+ // POST /plugins/observability/api/security/config
155
+ if (path === '/plugins/observability/api/security/config' && req.method === 'POST') {
156
+ if (!securityControl) {
157
+ sendJson(res, 503, { error: 'Security control unavailable' });
158
+ return;
159
+ }
160
+ const body = await readBody(req);
161
+ let payload = {};
162
+ if (body) {
163
+ try {
164
+ payload = JSON.parse(body);
165
+ }
166
+ catch {
167
+ sendJson(res, 400, { error: 'Invalid JSON body' });
168
+ return;
169
+ }
170
+ }
171
+ const nextConfig = securityControl.updateConfig(payload);
172
+ sendJson(res, 200, { config: nextConfig });
173
+ return;
174
+ }
94
175
  // GET /plugins/observability/api/alerts
95
176
  if (path === '/plugins/observability/api/alerts') {
96
- const page = intParam(url, 'page', 1);
97
- const limit = intParam(url, 'limit', 20);
177
+ const page = intParam(url, 'page', 1, 1);
178
+ const limit = intParam(url, 'limit', 20, 1);
98
179
  const severity = url.searchParams.get('severity') || undefined;
99
180
  const category = url.searchParams.get('category') || undefined;
100
181
  const status = url.searchParams.get('status') || undefined;
@@ -111,9 +192,18 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
111
192
  const alertStatusMatch = path.match(/^\/plugins\/observability\/api\/alerts\/([^/]+)\/status$/);
112
193
  if (alertStatusMatch && req.method === 'POST') {
113
194
  const alertId = decodeURIComponent(alertStatusMatch[1]);
114
- // Read POST body
115
195
  const body = await readBody(req);
116
- const { status: newStatus, resolvedBy } = JSON.parse(body);
196
+ let newStatus;
197
+ let resolvedBy;
198
+ try {
199
+ const parsed = JSON.parse(body || '{}');
200
+ newStatus = parsed.status ?? '';
201
+ resolvedBy = parsed.resolvedBy;
202
+ }
203
+ catch {
204
+ sendJson(res, 400, { error: 'Invalid JSON body' });
205
+ return;
206
+ }
117
207
  const ok = await (0, api_1.updateAlertStatus)(pool, alertId, newStatus, resolvedBy);
118
208
  sendJson(res, ok ? 200 : 404, { success: ok });
119
209
  return;
@@ -139,10 +229,10 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
139
229
  }
140
230
  catch (err) {
141
231
  console.error('[openclaw-observability] HTTP handler error:', err);
142
- sendJson(res, 500, { error: String(err) });
232
+ sendJson(res, 500, { error: 'Internal server error' });
143
233
  }
144
234
  },
145
- auth: 'gateway',
235
+ auth: 'plugin',
146
236
  match: 'prefix',
147
237
  });
148
238
  console.log('[openclaw-observability] Observability UI registered at /plugins/observability/');
@@ -153,12 +243,14 @@ function registerAuditRoutes(registerHttpRoute, writer, requiredToken) {
153
243
  function parseUrl(req) {
154
244
  return new URL(req.url || '/', 'http://' + (req.headers.host || 'localhost'));
155
245
  }
156
- function intParam(url, name, defaultVal) {
246
+ function intParam(url, name, defaultVal, minValue = Number.MIN_SAFE_INTEGER) {
157
247
  const v = url.searchParams.get(name);
158
248
  if (!v)
159
249
  return defaultVal;
160
250
  const n = parseInt(v, 10);
161
- return isNaN(n) ? defaultVal : n;
251
+ if (isNaN(n) || n < minValue)
252
+ return defaultVal;
253
+ return n;
162
254
  }
163
255
  function sendJson(res, status, data) {
164
256
  res.writeHead(status, {
@@ -174,6 +266,65 @@ function sendHtml(res, html) {
174
266
  });
175
267
  res.end(html);
176
268
  }
269
+ function resolveMediaPath(rawPath) {
270
+ if (!rawPath)
271
+ return null;
272
+ let candidate = rawPath.trim();
273
+ if (candidate.startsWith('file://')) {
274
+ try {
275
+ candidate = decodeURIComponent(new URL(candidate).pathname);
276
+ }
277
+ catch {
278
+ return null;
279
+ }
280
+ }
281
+ if (!candidate)
282
+ return null;
283
+ const resolved = path.resolve(candidate);
284
+ let realPath = resolved;
285
+ try {
286
+ realPath = fs.realpathSync(resolved);
287
+ }
288
+ catch {
289
+ // keep resolved path for non-symlink files
290
+ }
291
+ const workspaceMediaRoot = path.resolve(path.join(os.homedir(), '.openclaw', 'workspace', 'media'));
292
+ const allowedRoot = workspaceMediaRoot.endsWith(path.sep) ? workspaceMediaRoot : workspaceMediaRoot + path.sep;
293
+ if (realPath === workspaceMediaRoot || realPath.startsWith(allowedRoot)) {
294
+ return realPath;
295
+ }
296
+ return null;
297
+ }
298
+ function contentTypeByExt(filePath) {
299
+ const ext = path.extname(filePath).toLowerCase();
300
+ if (ext === '.png')
301
+ return 'image/png';
302
+ if (ext === '.jpg' || ext === '.jpeg')
303
+ return 'image/jpeg';
304
+ if (ext === '.gif')
305
+ return 'image/gif';
306
+ if (ext === '.webp')
307
+ return 'image/webp';
308
+ if (ext === '.bmp')
309
+ return 'image/bmp';
310
+ if (ext === '.svg')
311
+ return 'image/svg+xml';
312
+ return 'application/octet-stream';
313
+ }
314
+ function sendBinaryFile(res, filePath) {
315
+ try {
316
+ const st = fs.statSync(filePath);
317
+ res.writeHead(200, {
318
+ 'Content-Type': contentTypeByExt(filePath),
319
+ 'Content-Length': String(st.size),
320
+ 'Cache-Control': 'no-cache',
321
+ });
322
+ fs.createReadStream(filePath).pipe(res);
323
+ }
324
+ catch (err) {
325
+ sendJson(res, 500, { error: 'Failed to read media file', detail: String(err) });
326
+ }
327
+ }
177
328
  /** Read request body with max size limit to prevent DoS */
178
329
  function readBody(req, maxBytes = 1024 * 64 /* 64KB */) {
179
330
  return new Promise((resolve, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/web/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/web/routes.ts"],"names":[],"mappings":"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"}