@optimizely-opal/opal-tool-ocp-sdk 1.0.0-OCP-1442.1 โ†’ 1.0.0-OCP-1442.3

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/README.md CHANGED
@@ -14,6 +14,7 @@ A TypeScript SDK for building Opal tools in Optimizely Connect Platform. This SD
14
14
  - ๐Ÿ›ก๏ธ **Authorization Support** - OptiID token tool authorization
15
15
  - ๐Ÿ“ **Parameter Validation** - Define and validate tool parameters with types
16
16
  - โœ… **Automatic Validation** - SDK automatically validates parameters and returns RFC 9457 compliant error responses
17
+ - ๐Ÿ“Š **Request/Response Logging** - Comprehensive logging with sensitive data redaction and performance monitoring
17
18
  - ๐Ÿงช **Comprehensive Testing** - Fully tested with Jest
18
19
 
19
20
  ## Installation
@@ -400,6 +401,77 @@ Key model classes with generic type support:
400
401
  - `InteractionResult` - Response from interactions
401
402
  - `OptiIdAuthData` - OptiID specific authentication data
402
403
 
404
+ ## Request and Response Logging
405
+
406
+ The SDK automatically logs all incoming requests and outgoing responses with comprehensive metadata for debugging and monitoring purposes.
407
+
408
+ ### Logging Features
409
+
410
+ - **Automatic Logging** - All requests and responses are logged without additional configuration
411
+ - **Performance Monitoring** - Request duration tracking with millisecond precision
412
+ - **Security-First** - Sensitive data is automatically redacted from logs
413
+ - **Zaius Audience** - Logs are visible only to developers with appropriate access
414
+ - **Structured Data** - Consistent JSON format for easy parsing and analysis
415
+
416
+ ### Request Logging
417
+
418
+ Every incoming request is logged with the following information:
419
+
420
+ ```json
421
+ {
422
+ "event": "opal_tool_request",
423
+ "path": "/create-task",
424
+ "parameters": {
425
+ "title": "Complete project",
426
+ "priority": "high",
427
+ "api_key": "[REDACTED]"
428
+ }
429
+ }
430
+ ```
431
+
432
+ ### Response Logging
433
+
434
+ Every outgoing response is logged with performance and metadata:
435
+
436
+ ```json
437
+ {
438
+ "event": "opal_tool_response",
439
+ "path": "/create-task",
440
+ "duration": "150ms",
441
+ "status": 200,
442
+ "contentType": "application/json",
443
+ "contentLength": 234,
444
+ "success": true
445
+ }
446
+ ```
447
+
448
+ ### Sensitive Data Redaction
449
+
450
+ The SDK automatically redacts sensitive information from request logs to protect security credentials and personal data. The following field types are automatically redacted:
451
+
452
+ **Authentication & Security:**
453
+ - `password`, `pass`, `secret`, `key`, `token`
454
+ - `auth`, `credentials`, `access_token`, `refresh_token`
455
+ - `api_key`, `private_key`, `client_secret`, `session_token`
456
+ - `authorization`, `bearer_token`, `jwt`
457
+ - `otp`, `pin`, `signing_key`, `encryption_key`
458
+
459
+ **Payment Information:**
460
+ - `card_number`, `credit_card`, `cvv`, `expiry_date`
461
+
462
+ **Personal Data:**
463
+ - `ssn`, `nid`, `passport`, `dob`
464
+ - `email`, `phone`, `address`
465
+
466
+ **Security Questions:**
467
+ - `security_answer`, `security_question`
468
+
469
+ Redacted fields appear as `[REDACTED]` in logs while preserving the overall request structure for debugging.
470
+
471
+ ### Log Visibility
472
+
473
+ All logs use Zaius audience visibility, meaning developers only see logs for requests from organizations they have access to, maintaining proper data isolation and security.
474
+
403
475
  ## Discovery and Ready Endpoints
404
476
 
405
477
  The SDK automatically provides two important endpoints:
@@ -35,7 +35,7 @@ class GlobalToolFunction extends app_sdk_1.GlobalFunction {
35
35
  });
36
36
  ToolLogger_1.ToolLogger.logRequest(this.request);
37
37
  const response = await this.handleRequest();
38
- ToolLogger_1.ToolLogger.logResponse(this.request, response, startTime - Date.now());
38
+ ToolLogger_1.ToolLogger.logResponse(this.request, response, Date.now() - startTime);
39
39
  return response;
40
40
  }
41
41
  async handleRequest() {
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalToolFunction.js","sourceRoot":"","sources":["../../src/function/GlobalToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAA8E;AAC9E,iDAA+E;AAC/E,gDAAkD;AAClD,sDAAmD;AAEnD;;;GAGG;AACH,MAAsB,kBAAmB,SAAQ,wBAAc;IAE7D;;;;;OAKG;IACO,KAAK;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;QAEhE,IAAA,yBAAe,EAAC;YACd,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAChE,UAAU,EAAE,UAAU,IAAI,EAAE;SAC7B,CAAC,CAAC;QAEH,uBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,OAAO,MAAM,IAAA,qCAAyB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACF;AAzDD,gDAyDC"}
1
+ {"version":3,"file":"GlobalToolFunction.js","sourceRoot":"","sources":["../../src/function/GlobalToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAA8E;AAC9E,iDAA+E;AAC/E,gDAAkD;AAClD,sDAAmD;AAEnD;;;GAGG;AACH,MAAsB,kBAAmB,SAAQ,wBAAc;IAE7D;;;;;OAKG;IACO,KAAK;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;QAEhE,IAAA,yBAAe,EAAC;YACd,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE;YAChE,UAAU,EAAE,UAAU,IAAI,EAAE;SAC7B,CAAC,CAAC;QAEH,uBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,OAAO,MAAM,IAAA,qCAAyB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACF;AAzDD,gDAyDC"}
@@ -29,7 +29,7 @@ class ToolFunction extends app_sdk_1.Function {
29
29
  (0, app_sdk_1.amendLogContext)({ opalThreadId: this.request.headers.get('x-opal-thread-id') || '' });
30
30
  ToolLogger_1.ToolLogger.logRequest(this.request);
31
31
  const response = await this.handleRequest();
32
- ToolLogger_1.ToolLogger.logResponse(this.request, response, startTime - Date.now());
32
+ ToolLogger_1.ToolLogger.logResponse(this.request, response, Date.now() - startTime);
33
33
  return response;
34
34
  }
35
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAAwE;AACxE,iDAA+D;AAC/D,gDAAkD;AAClD,sDAAmD;AAEnD;;;GAGG;AACH,MAAsB,YAAa,SAAQ,kBAAQ;IAEjD;;;;;OAKG;IACO,KAAK;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAA,yBAAe,EAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEtF,uBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE5C,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4EAA4E;QAC5E,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,OAAO,MAAM,IAAA,sCAA0B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AAxDD,oCAwDC"}
1
+ {"version":3,"file":"ToolFunction.js","sourceRoot":"","sources":["../../src/function/ToolFunction.ts"],"names":[],"mappings":";;;AAAA,+CAAwE;AACxE,iDAA+D;AAC/D,gDAAkD;AAClD,sDAAmD;AAEnD;;;GAGG;AACH,MAAsB,YAAa,SAAQ,kBAAQ;IAEjD;;;;;OAKG;IACO,KAAK;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAA,yBAAe,EAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEtF,uBAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE5C,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,IAAI,kBAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,4EAA4E;QAC5E,OAAO,sBAAY,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB;QAC5B,OAAO,MAAM,IAAA,sCAA0B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AAxDD,oCAwDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolLogger.d.ts","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAEzC;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAYtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC;;OAEG;WACW,UAAU,CACtB,GAAG,EAAE,GAAG,CAAC,OAAO,GACf,IAAI;IAYP;;OAEG;WACW,WAAW,CACvB,GAAG,EAAE,GAAG,CAAC,OAAO,EAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;CAeR"}
1
+ {"version":3,"file":"ToolLogger.d.ts","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AAEzC;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAyCtC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAoBrC;;OAEG;WACW,UAAU,CACtB,GAAG,EAAE,GAAG,CAAC,OAAO,GACf,IAAI;IAYP;;OAEG;WACW,WAAW,CACvB,GAAG,EAAE,GAAG,CAAC,OAAO,EAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;CAiBR"}
@@ -7,7 +7,9 @@ const app_sdk_1 = require("@zaiusinc/app-sdk");
7
7
  */
8
8
  class ToolLogger {
9
9
  static SENSITIVE_FIELDS = [
10
+ // Authentication / secrets
10
11
  'password',
12
+ 'pass',
11
13
  'secret',
12
14
  'key',
13
15
  'token',
@@ -17,7 +19,31 @@ class ToolLogger {
17
19
  'refresh_token',
18
20
  'api_key',
19
21
  'private_key',
20
- 'client_secret'
22
+ 'client_secret',
23
+ 'session_token',
24
+ 'authorization',
25
+ // Payment-related
26
+ 'card_number',
27
+ 'credit_card',
28
+ 'cvv',
29
+ 'expiry_date',
30
+ // Personal info
31
+ 'ssn', // social security number
32
+ 'nid', // national ID
33
+ 'passport',
34
+ 'dob', // date of birth
35
+ 'email',
36
+ 'phone',
37
+ 'address',
38
+ // Misc / environment
39
+ 'otp',
40
+ 'pin',
41
+ 'security_answer',
42
+ 'security_question',
43
+ 'signing_key',
44
+ 'encryption_key',
45
+ 'jwt',
46
+ 'bearer_token'
21
47
  ];
22
48
  static MAX_PARAM_LENGTH = 100;
23
49
  static MAX_ARRAY_ITEMS = 10;
@@ -29,18 +55,18 @@ class ToolLogger {
29
55
  return data;
30
56
  }
31
57
  if (typeof data === 'string') {
32
- return data.length > this.MAX_PARAM_LENGTH
33
- ? `${data.substring(0, this.MAX_PARAM_LENGTH)}... (truncated, ${data.length} chars total)`
58
+ return data.length > ToolLogger.MAX_PARAM_LENGTH
59
+ ? `${data.substring(0, ToolLogger.MAX_PARAM_LENGTH)}... (truncated, ${data.length} chars total)`
34
60
  : data;
35
61
  }
36
62
  if (typeof data === 'number' || typeof data === 'boolean') {
37
63
  return data;
38
64
  }
39
65
  if (Array.isArray(data)) {
40
- const truncated = data.slice(0, this.MAX_ARRAY_ITEMS);
41
- const result = truncated.map((item) => this.redactSensitiveData(item, maxDepth - 1));
42
- if (data.length > this.MAX_ARRAY_ITEMS) {
43
- result.push(`... (${data.length - this.MAX_ARRAY_ITEMS} more items truncated)`);
66
+ const truncated = data.slice(0, ToolLogger.MAX_ARRAY_ITEMS);
67
+ const result = truncated.map((item) => ToolLogger.redactSensitiveData(item, maxDepth - 1));
68
+ if (data.length > ToolLogger.MAX_ARRAY_ITEMS) {
69
+ result.push(`... (${data.length - ToolLogger.MAX_ARRAY_ITEMS} more items truncated)`);
44
70
  }
45
71
  return result;
46
72
  }
@@ -48,12 +74,12 @@ class ToolLogger {
48
74
  const result = {};
49
75
  for (const [key, value] of Object.entries(data)) {
50
76
  // Check if this field contains sensitive data
51
- const isSensitive = this.isSensitiveField(key);
77
+ const isSensitive = ToolLogger.isSensitiveField(key);
52
78
  if (isSensitive) {
53
79
  result[key] = '[REDACTED]';
54
80
  }
55
81
  else {
56
- result[key] = this.redactSensitiveData(value, maxDepth - 1);
82
+ result[key] = ToolLogger.redactSensitiveData(value, maxDepth - 1);
57
83
  }
58
84
  }
59
85
  return result;
@@ -65,7 +91,7 @@ class ToolLogger {
65
91
  */
66
92
  static isSensitiveField(fieldName) {
67
93
  const lowerKey = fieldName.toLowerCase();
68
- return this.SENSITIVE_FIELDS.some((sensitiveField) => lowerKey.includes(sensitiveField));
94
+ return ToolLogger.SENSITIVE_FIELDS.some((sensitiveField) => lowerKey.includes(sensitiveField));
69
95
  }
70
96
  /**
71
97
  * Creates a summary of request parameters
@@ -74,22 +100,28 @@ class ToolLogger {
74
100
  if (!params) {
75
101
  return null;
76
102
  }
77
- return this.redactSensitiveData(params);
103
+ return ToolLogger.redactSensitiveData(params);
78
104
  }
79
105
  /**
80
106
  * Calculates content length of response data
81
107
  */
82
- static calculateContentLength(responseData) {
83
- if (!responseData) {
108
+ static calculateContentLength(response) {
109
+ if (!response) {
84
110
  return 0;
85
111
  }
86
112
  try {
87
- const serialized = JSON.stringify(responseData);
88
- return serialized.length;
113
+ if (response?.bodyJSON) {
114
+ const responseBodyJson = JSON.stringify(response.bodyJSON);
115
+ console.log('BodyJson length', responseBodyJson.length || 0);
116
+ return responseBodyJson.length;
117
+ }
89
118
  }
90
119
  catch {
120
+ console.log("Circular reference or JSON error, returning 'unknown'");
91
121
  return 'unknown';
92
122
  }
123
+ console.log('Body length', response.body?.length || 0);
124
+ return response.body?.length || 0;
93
125
  }
94
126
  /**
95
127
  * Logs an incoming request
@@ -99,26 +131,29 @@ class ToolLogger {
99
131
  const requestLog = {
100
132
  event: 'opal_tool_request',
101
133
  path: req.path,
102
- parameters: this.createParameterSummary(params)
134
+ parameters: ToolLogger.createParameterSummary(params)
103
135
  };
104
136
  // Log with Zaius audience so developers only see requests for accounts they have access to
105
- app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, requestLog);
137
+ app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, JSON.stringify(requestLog));
106
138
  }
107
139
  /**
108
140
  * Logs a successful response
109
141
  */
110
142
  static logResponse(req, response, processingTimeMs) {
143
+ console.log('response', response);
144
+ console.log('response body json', response.bodyJSON);
145
+ console.log('response body', response.body);
111
146
  const responseLog = {
112
147
  event: 'opal_tool_response',
113
148
  path: req.path,
114
149
  duration: processingTimeMs ? `${processingTimeMs}ms` : undefined,
115
150
  status: response.status,
116
151
  contentType: response.headers?.get('content-type') || 'unknown',
117
- contentLength: this.calculateContentLength(response.bodyJSON),
152
+ contentLength: ToolLogger.calculateContentLength(response),
118
153
  success: response.status >= 200 && response.status < 300
119
154
  };
120
155
  // Log with Zaius audience so developers only see requests for accounts they have access to
121
- app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, responseLog);
156
+ app_sdk_1.logger.info(app_sdk_1.LogVisibility.Zaius, JSON.stringify(responseLog));
122
157
  }
123
158
  }
124
159
  exports.ToolLogger = ToolLogger;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolLogger.js","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolLogger.js","sourceRoot":"","sources":["../../src/logging/ToolLogger.ts"],"names":[],"mappings":"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"}