@loop_ouroboros/mcp-hub-lite 1.0.0 → 1.0.2

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 (129) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +15 -0
  3. package/dist/client/assets/{HomeView-f901HeKw.js → HomeView-7rMg9C6t.js} +1 -1
  4. package/dist/client/assets/{ResourceDetailView-Bz66ZjfY.js → ResourceDetailView-Bf-1ffbk.js} +1 -1
  5. package/dist/client/assets/ResourcesView-g5x4xCPh.js +1 -0
  6. package/dist/client/assets/{ServerDashboard-7_8Og9JJ.css → ServerDashboard-Chpne8Q0.css} +1 -1
  7. package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +2 -0
  8. package/dist/client/assets/ServerListView-dV2XrPjo.js +32 -0
  9. package/dist/client/assets/SessionsView-Ckd38lj1.js +1 -0
  10. package/dist/client/assets/SettingsView-BJUdepEQ.js +1 -0
  11. package/dist/client/assets/ToolCallDialog-BhdPX-Kf.css +1 -0
  12. package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +1 -0
  13. package/dist/client/assets/ToolsView-0c2eputu.js +1 -0
  14. package/dist/client/assets/ToolsView-E3Ps9c7i.css +1 -0
  15. package/dist/client/assets/{_baseClone-DCmK847M.js → _baseClone-5q1b0P3O.js} +1 -1
  16. package/dist/client/assets/{el-form-item-DM0q2hmO.js → el-form-item-ClFnj49k.js} +1 -1
  17. package/dist/client/assets/{el-input-BtI9NECe.js → el-input-CDnuSKVZ.js} +1 -1
  18. package/dist/client/assets/{el-loading-CChNmKeI.js → el-loading-H85n3BUC.js} +1 -1
  19. package/dist/client/assets/{el-overlay-lZZbPmsX.js → el-overlay-CzMkXyYy.js} +1 -1
  20. package/dist/client/assets/el-select-DvjGddk_.js +1 -0
  21. package/dist/client/assets/{el-tab-pane-Dy9ruaEX.js → el-tab-pane-C_DQMcwe.js} +1 -1
  22. package/dist/client/assets/{el-table-column-98UyVgBH.js → el-table-column-CASRIbZM.js} +1 -1
  23. package/dist/client/assets/el-tag-npbwux4f.js +1 -0
  24. package/dist/client/assets/{index-CSTs2jYk.js → index-CCnAxNF8.js} +2 -2
  25. package/dist/client/assets/{index-BzQXG7no.js → index-d1DZeSfz.js} +1 -1
  26. package/dist/client/assets/{omit-Bx5HJNV_.js → omit-DPsOVNIJ.js} +1 -1
  27. package/dist/client/assets/{raf-B9VDMtMF.js → raf-DY5mgbuB.js} +1 -1
  28. package/dist/client/assets/{vnode-B8aJx8u4.js → vnode-CHomNjgN.js} +1 -1
  29. package/dist/client/index.html +1 -1
  30. package/dist/server/shared/models/server.model.d.ts +1 -0
  31. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  32. package/dist/server/shared/models/session.model.d.ts +2 -0
  33. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  34. package/dist/server/shared/models/session.model.js +1 -0
  35. package/dist/server/shared/types/client.types.d.ts +4 -32
  36. package/dist/server/shared/types/client.types.d.ts.map +1 -1
  37. package/dist/server/shared/types/client.types.js +3 -2
  38. package/dist/server/shared/types/index.d.ts +3 -3
  39. package/dist/server/shared/types/index.d.ts.map +1 -1
  40. package/dist/server/shared/types/index.js +3 -3
  41. package/dist/server/shared/types/session-context.types.d.ts +37 -0
  42. package/dist/server/shared/types/session-context.types.d.ts.map +1 -0
  43. package/dist/server/shared/types/session-context.types.js +5 -0
  44. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -1
  45. package/dist/server/src/api/mcp/debug-response-wrapper.js +26 -1
  46. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  47. package/dist/server/src/api/mcp/gateway.js +28 -24
  48. package/dist/server/src/api/mcp/session-context-extractor.d.ts +5 -5
  49. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  50. package/dist/server/src/api/mcp/session-context-extractor.js +12 -27
  51. package/dist/server/src/api/web/clients.js +2 -2
  52. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  53. package/dist/server/src/api/web/hub-tools.js +4 -1
  54. package/dist/server/src/api/web/sessions.js +1 -1
  55. package/dist/server/src/app.d.ts.map +1 -1
  56. package/dist/server/src/app.js +0 -2
  57. package/dist/server/src/config/config.schema.d.ts +2 -0
  58. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  59. package/dist/server/src/config/config.schema.js +1 -0
  60. package/dist/server/src/index.js +1 -1
  61. package/dist/server/src/services/client-tracker.service.d.ts +3 -128
  62. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -1
  63. package/dist/server/src/services/client-tracker.service.js +4 -200
  64. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +2 -2
  65. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  66. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +40 -8
  67. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  68. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +18 -6
  69. package/dist/server/src/services/gateway/tool-list-generator.js +2 -2
  70. package/dist/server/src/services/hub-tools/resource-generator.d.ts +1 -4
  71. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  72. package/dist/server/src/services/hub-tools/resource-generator.js +1 -26
  73. package/dist/server/src/services/search/search-cache.d.ts +0 -19
  74. package/dist/server/src/services/search/search-cache.d.ts.map +1 -1
  75. package/dist/server/src/services/search/search-cache.js +0 -24
  76. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  77. package/dist/server/src/services/session/session-manager.js +11 -9
  78. package/dist/server/src/services/session-tracker.service.d.ts +132 -0
  79. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -0
  80. package/dist/server/src/services/session-tracker.service.js +227 -0
  81. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  82. package/dist/server/src/utils/json-utils.js +6 -0
  83. package/dist/server/src/utils/logger/log-colors.d.ts +1 -0
  84. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -1
  85. package/dist/server/src/utils/logger/log-colors.js +2 -1
  86. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  87. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  88. package/dist/server/src/utils/logger/log-formatter.d.ts +28 -0
  89. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  90. package/dist/server/src/utils/logger/log-formatter.js +205 -0
  91. package/dist/server/src/utils/logger/log-modules.d.ts +3 -6
  92. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  93. package/dist/server/src/utils/logger/log-modules.js +1 -3
  94. package/dist/server/src/utils/logger/log-output.d.ts +2 -2
  95. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  96. package/dist/server/src/utils/logger/log-output.js +27 -6
  97. package/dist/server/src/utils/logger/logger.d.ts +13 -0
  98. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  99. package/dist/server/src/utils/logger/logger.js +42 -7
  100. package/dist/server/src/utils/request-context.d.ts +16 -16
  101. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  102. package/dist/server/src/utils/request-context.js +14 -14
  103. package/dist/server/src/utils/tool-args-parser.d.ts +0 -4
  104. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -1
  105. package/dist/server/src/utils/tool-args-parser.js +0 -7
  106. package/dist/server/src/utils/transports/stdio-transport.js +1 -1
  107. package/dist/server/src/utils/transports/transport-factory.js +2 -2
  108. package/dist/server/tests/integration/api/gateway.test.js +22 -37
  109. package/dist/server/tests/temp/test-stack.d.ts +6 -0
  110. package/dist/server/tests/temp/test-stack.d.ts.map +1 -0
  111. package/dist/server/tests/temp/test-stack.js +40 -0
  112. package/dist/server/tests/unit/services/hub-tools.service.test.js +1 -15
  113. package/dist/server/tests/unit/services/session-manager.test.js +1 -1
  114. package/dist/server/tests/unit/utils/json-utils.test.js +94 -0
  115. package/dist/server/tests/unit/utils/logger.test.js +101 -0
  116. package/dist/server/tests/unit/utils/request-context.test.js +12 -12
  117. package/package.json +1 -1
  118. package/dist/client/assets/ResourcesView-lI_fItfA.js +0 -1
  119. package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +0 -2
  120. package/dist/client/assets/ServerListView-CP6Ffkfx.js +0 -30
  121. package/dist/client/assets/SessionsView-D68qKR4D.js +0 -1
  122. package/dist/client/assets/SettingsView-BPYfO9BE.js +0 -1
  123. package/dist/client/assets/ToolCallDialog-Br8FNebN.js +0 -1
  124. package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +0 -1
  125. package/dist/client/assets/ToolsView-B6hUiR43.js +0 -1
  126. package/dist/client/assets/ToolsView-BLnU8cV6.css +0 -1
  127. package/dist/client/assets/el-select-BXztu2b5.js +0 -1
  128. package/dist/client/assets/el-tag-B5lLT51E.js +0 -1
  129. package/dist/client/assets/index-BgKcmWJr.js +0 -1
@@ -6,6 +6,204 @@ import { stringifyForLogging } from '../json-utils.js';
6
6
  import { getColorCodeForLevel, getResetColor, COLORS } from './log-colors.js';
7
7
  // PID formatting configuration
8
8
  const PID_WIDTH = 8;
9
+ /**
10
+ * Check if we're running via tsx (development mode).
11
+ * In tsx mode, stack traces already show TypeScript file names and line numbers.
12
+ *
13
+ * @returns true if running via tsx
14
+ */
15
+ function isTsxMode() {
16
+ return (process.argv.some((arg) => arg.includes('tsx')) ||
17
+ process.execArgv.some((arg) => arg.includes('tsx')) ||
18
+ !!process.env.TSX ||
19
+ (process.mainModule?.filename.includes('tsx') ?? false));
20
+ }
21
+ /**
22
+ * Check if a file path is a project source file.
23
+ *
24
+ * @param filePath - The file path to check
25
+ * @returns true if the file is within the project's src directory
26
+ */
27
+ function isProjectSourceFile(filePath) {
28
+ return filePath.includes('/src/') || filePath.includes('\\src\\');
29
+ }
30
+ /**
31
+ * Clean up a file path to make it more readable.
32
+ * Extracts the relative path from the src directory if present.
33
+ * In tsx mode, keeps the .ts extension; in compiled mode, converts .js to .ts.
34
+ *
35
+ * @param filePath - The full file path to clean
36
+ * @returns Cleaned file path
37
+ */
38
+ function cleanFilePath(filePath) {
39
+ let cleanFileName = filePath;
40
+ // If it's a full path, try to extract just the file name or relative path
41
+ if (cleanFileName.includes('/')) {
42
+ // Extract everything after the last /src/ if present
43
+ const srcIndex = cleanFileName.lastIndexOf('/src/');
44
+ if (srcIndex !== -1) {
45
+ cleanFileName = 'src' + cleanFileName.substring(srcIndex + 4);
46
+ }
47
+ else {
48
+ // Otherwise just take the base name
49
+ cleanFileName = cleanFileName.substring(cleanFileName.lastIndexOf('/') + 1);
50
+ }
51
+ }
52
+ else if (cleanFileName.includes('\\')) {
53
+ // Handle Windows paths
54
+ const srcIndex = cleanFileName.lastIndexOf('\\src\\');
55
+ if (srcIndex !== -1) {
56
+ cleanFileName = 'src' + cleanFileName.substring(srcIndex + 4);
57
+ }
58
+ else {
59
+ cleanFileName = cleanFileName.substring(cleanFileName.lastIndexOf('\\') + 1);
60
+ }
61
+ }
62
+ // In non-tsx mode (compiled JS), convert .js to .ts for TypeScript source files
63
+ if (!isTsxMode() && cleanFileName.endsWith('.js')) {
64
+ // Check if there's likely a .ts source file
65
+ // For our project, all .js files in src/ are compiled from .ts
66
+ if (cleanFileName.startsWith('src/') || cleanFileName.startsWith('src\\')) {
67
+ cleanFileName = cleanFileName.replace(/\.js$/, '.ts');
68
+ }
69
+ }
70
+ return cleanFileName;
71
+ }
72
+ /**
73
+ * Get caller information from stack trace.
74
+ * Extracts the file name, line number, and column number from the call stack.
75
+ * This method traverses the stack to find the first project source file (in src/),
76
+ * skipping external dependencies and Node.js internals.
77
+ *
78
+ * In tsx (development) mode: Parses default stack string for accurate .ts line numbers
79
+ * In production mode: Shows .ts file names but without line numbers (inaccurate)
80
+ *
81
+ * @param skipFrames - Number of stack frames to skip before starting the search (default: 3 to skip logger internal frames)
82
+ * @returns CallerInfo with fileName, lineNumber, columnNumber or null if cannot be determined
83
+ */
84
+ export function getCallerInfo(skipFrames = 3) {
85
+ // In tsx mode, parse the default stack string for accurate line numbers
86
+ if (isTsxMode()) {
87
+ return getCallerInfoFromStackString(skipFrames);
88
+ }
89
+ // In production mode, use structured stack frames but without line numbers
90
+ return getCallerInfoFromStructuredStack(skipFrames);
91
+ }
92
+ /**
93
+ * Parse caller information from default stack string (for tsx mode).
94
+ * In tsx mode, the default stack string already contains accurate TypeScript
95
+ * file names and line numbers, so we parse it directly.
96
+ *
97
+ * @param skipFrames - Number of stack frames to skip
98
+ * @returns CallerInfo or null if cannot be determined
99
+ */
100
+ function getCallerInfoFromStackString(skipFrames) {
101
+ const err = new Error();
102
+ const stackStr = err.stack;
103
+ if (!stackStr)
104
+ return null;
105
+ const lines = stackStr.split('\n').slice(1); // Skip first line ("Error")
106
+ // Find the first project source file in the stack
107
+ for (let i = skipFrames; i < lines.length; i++) {
108
+ const line = lines[i];
109
+ if (!line)
110
+ continue;
111
+ // Match patterns like:
112
+ // at ... (file:///D:/path/src/file.ts:123:45)
113
+ // at ... (D:\path\src\file.ts:123:45)
114
+ // at file:///D:/path/src/file.ts:123:45
115
+ const match = line.match(/(?:\(|at\s+)([^:\s]+\/src\/[^:\s)]+|\S+\\src\\[^:\s)]+):(\d+)(?::(\d+))?/);
116
+ if (match) {
117
+ let filePath = match[1];
118
+ const lineNumber = parseInt(match[2], 10) || 0;
119
+ const columnNumber = match[3] ? parseInt(match[3], 10) : 0;
120
+ // Remove file:// prefix if present
121
+ if (filePath.startsWith('file://')) {
122
+ filePath = filePath.replace('file://', '');
123
+ // On Windows, file:///D:/path becomes /D:/path - fix that
124
+ if (filePath.startsWith('/') && filePath.length > 2 && filePath[2] === ':') {
125
+ filePath = filePath.substring(1);
126
+ }
127
+ }
128
+ const cleanFileName = cleanFilePath(filePath);
129
+ return {
130
+ fileName: cleanFileName,
131
+ lineNumber,
132
+ columnNumber
133
+ };
134
+ }
135
+ }
136
+ return null;
137
+ }
138
+ /**
139
+ * Get caller information from structured stack frames (for production mode).
140
+ * In production mode, we show the .ts file name but without line numbers
141
+ * since they would be inaccurate.
142
+ *
143
+ * @param skipFrames - Number of stack frames to skip
144
+ * @returns CallerInfo or null if cannot be determined
145
+ */
146
+ function getCallerInfoFromStructuredStack(skipFrames) {
147
+ const originalPrepareStackTrace = Error.prepareStackTrace;
148
+ let callerInfo = null;
149
+ try {
150
+ // Override prepareStackTrace to get structured stack frames
151
+ Error.prepareStackTrace = (_err, stack) => stack;
152
+ const err = new Error();
153
+ const stack = err.stack;
154
+ if (stack && stack.length > skipFrames) {
155
+ let selectedFrame = null;
156
+ // Traverse stack frames starting from skipFrames
157
+ // Look for the first project source file (contains /src/ or \src\)
158
+ for (let i = skipFrames; i < stack.length; i++) {
159
+ const frame = stack[i];
160
+ if (!frame)
161
+ continue;
162
+ const fileName = frame.getFileName() || '';
163
+ // If this is a project source file, use it
164
+ if (isProjectSourceFile(fileName)) {
165
+ selectedFrame = frame;
166
+ break;
167
+ }
168
+ }
169
+ // If no project source file found, fall back to the original skipFrames approach
170
+ if (!selectedFrame) {
171
+ selectedFrame = stack[skipFrames] || null;
172
+ }
173
+ if (selectedFrame) {
174
+ const fileName = selectedFrame.getFileName() || 'unknown';
175
+ // Clean up file path to make it more readable
176
+ const cleanFileName = cleanFilePath(fileName);
177
+ // In production mode, line numbers are inaccurate - don't show them
178
+ callerInfo = {
179
+ fileName: cleanFileName,
180
+ lineNumber: 0,
181
+ columnNumber: 0
182
+ };
183
+ }
184
+ }
185
+ }
186
+ catch {
187
+ // Ignore errors - caller info is best effort
188
+ }
189
+ finally {
190
+ // Restore original prepareStackTrace
191
+ Error.prepareStackTrace = originalPrepareStackTrace;
192
+ }
193
+ return callerInfo;
194
+ }
195
+ /**
196
+ * Format caller information for display.
197
+ *
198
+ * @param callerInfo - Caller info to format
199
+ * @returns Formatted string like "file.ts:123" or just "file.ts" in production
200
+ */
201
+ export function formatCallerInfo(callerInfo) {
202
+ if (callerInfo.lineNumber > 0) {
203
+ return `${callerInfo.fileName}:${callerInfo.lineNumber}`;
204
+ }
205
+ return callerInfo.fileName;
206
+ }
9
207
  /**
10
208
  * Format a timestamp for logging.
11
209
  * @param date - The date to format
@@ -71,6 +269,7 @@ export function createColoredLogMessage(level, message, context) {
71
269
  const serverColor = COLORS.brightCyan;
72
270
  const moduleColor = COLORS.brightMagenta;
73
271
  const traceColor = COLORS.yellow;
272
+ const callerColor = COLORS.brightBlue;
74
273
  const resetColor = getResetColor();
75
274
  let result = `${timestampColor}[${timestamp}]${resetColor} ${levelColor}[${formattedLevel}]${resetColor} ${pidColor}[${formattedPid}]${resetColor}`;
76
275
  if (context?.traceId) {
@@ -83,6 +282,9 @@ export function createColoredLogMessage(level, message, context) {
83
282
  if (context?.module) {
84
283
  result += ` ${moduleColor}[${context.module}]${resetColor}`;
85
284
  }
285
+ if (context?.caller) {
286
+ result += ` ${callerColor}[${context.caller}]${resetColor}`;
287
+ }
86
288
  result += ` ${message}`;
87
289
  return result;
88
290
  }
@@ -110,6 +312,9 @@ export function createLogMessage(level, message, context) {
110
312
  if (context?.module) {
111
313
  result += ` [${context.module}]`;
112
314
  }
315
+ if (context?.caller) {
316
+ result += ` [${context.caller}]`;
317
+ }
113
318
  result += ` ${message}`;
114
319
  return result;
115
320
  }
@@ -42,6 +42,9 @@ export declare const LOG_MODULES: {
42
42
  readonly SESSION_API: {
43
43
  module: string;
44
44
  };
45
+ readonly SESSION_TRACKER: {
46
+ module: string;
47
+ };
45
48
  readonly CONNECTION_MANAGER: {
46
49
  module: string;
47
50
  };
@@ -99,12 +102,6 @@ export declare const LOG_MODULES: {
99
102
  readonly PID_MANAGER: {
100
103
  module: string;
101
104
  };
102
- readonly CLIENT_TRACKER: {
103
- module: string;
104
- };
105
- readonly CLIENT_API: {
106
- module: string;
107
- };
108
105
  readonly SERVER_API: {
109
106
  module: string;
110
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"log-modules.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+DtB;;;;;;;;;;;OAWG;mCACmB,MAAM;;;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"log-modules.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DtB;;;;;;;;;;;OAWG;mCACmB,MAAM;;;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC"}
@@ -29,6 +29,7 @@ export const LOG_MODULES = {
29
29
  SESSION_MANAGER: { module: 'SessionManager' },
30
30
  SESSION: { module: 'Session' },
31
31
  SESSION_API: { module: 'Session API' },
32
+ SESSION_TRACKER: { module: 'SessionTracker' },
32
33
  // Connection management
33
34
  CONNECTION_MANAGER: { module: 'ConnectionManager' },
34
35
  HUB_MANAGER: { module: 'HubManager' },
@@ -57,9 +58,6 @@ export const LOG_MODULES = {
57
58
  SSE_TRANSPORT: { module: 'SSETransport' },
58
59
  // PID management
59
60
  PID_MANAGER: { module: 'PIDManager' },
60
- // Client tracking
61
- CLIENT_TRACKER: { module: 'ClientTracker' },
62
- CLIENT_API: { module: 'ClientAPI' },
63
61
  // Server API
64
62
  SERVER_API: { module: 'ServerAPI' },
65
63
  MCP_STATUS: { module: 'MCPStatus' },
@@ -61,8 +61,8 @@ export declare function isToolsListResponse(data: string): boolean;
61
61
  /**
62
62
  * Simplify tools/list response log information.
63
63
  * @param data - Complete response data
64
- * @returns Simplified log information
64
+ * @returns Simplified log information, or null if cannot be simplified
65
65
  */
66
- export declare function simplifyToolsListResponse(data: string): string;
66
+ export declare function simplifyToolsListResponse(data: string): string | null;
67
67
  export {};
68
68
  //# sourceMappingURL=log-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-output.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,UAAU,yBAAyB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAMtF;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAiDjG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAsBnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgCrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAyCzD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyE9D"}
1
+ {"version":3,"file":"log-output.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,UAAU,yBAAyB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAMtF;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAiDjG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA4BnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgCrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAyCzD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuFrE"}
@@ -99,7 +99,14 @@ export function formatMcpMessageForLogging(message) {
99
99
  const rawJson = JSON.stringify(message);
100
100
  let logMessage;
101
101
  if (isToolsListResponse(rawJson)) {
102
- logMessage = simplifyToolsListResponse(rawJson);
102
+ const simplified = simplifyToolsListResponse(rawJson);
103
+ if (simplified === null) {
104
+ // Could not simplify, use pretty JSON formatting
105
+ logMessage = stringifyForLogging(message);
106
+ }
107
+ else {
108
+ logMessage = simplified;
109
+ }
103
110
  }
104
111
  else if (hasImageContent(rawJson)) {
105
112
  const simplified = simplifyImageContent(rawJson);
@@ -256,7 +263,7 @@ export function isToolsListResponse(data) {
256
263
  /**
257
264
  * Simplify tools/list response log information.
258
265
  * @param data - Complete response data
259
- * @returns Simplified log information
266
+ * @returns Simplified log information, or null if cannot be simplified
260
267
  */
261
268
  export function simplifyToolsListResponse(data) {
262
269
  try {
@@ -266,6 +273,9 @@ export function simplifyToolsListResponse(data) {
266
273
  if (dataMatch) {
267
274
  const jsonData = dataMatch[1].trim();
268
275
  const simplified = simplifyToolsListResponse(jsonData);
276
+ if (simplified === null) {
277
+ return null;
278
+ }
269
279
  return `event: message\ndata: ${simplified}`;
270
280
  }
271
281
  }
@@ -277,11 +287,19 @@ export function simplifyToolsListResponse(data) {
277
287
  const result = msg.result;
278
288
  if ('tools' in result) {
279
289
  const toolsCount = Array.isArray(result.tools) ? result.tools.length : 0;
280
- return `Returned ${toolsCount} tools`;
290
+ if (toolsCount > 0) {
291
+ return `Returned ${toolsCount} tools`;
292
+ }
293
+ // No tools, don't simplify
294
+ return null;
281
295
  }
282
296
  if ('resources' in result) {
283
297
  const resourcesCount = Array.isArray(result.resources) ? result.resources.length : 0;
284
- return `Returned ${resourcesCount} resources`;
298
+ if (resourcesCount > 0) {
299
+ return `Returned ${resourcesCount} resources`;
300
+ }
301
+ // No resources, don't simplify
302
+ return null;
285
303
  }
286
304
  if ('capabilities' in result &&
287
305
  typeof result.capabilities === 'object' &&
@@ -308,13 +326,16 @@ export function simplifyToolsListResponse(data) {
308
326
  else if (resourcesCount > 0) {
309
327
  return `Returned ${resourcesCount} resources`;
310
328
  }
329
+ // No tools or resources, don't simplify
330
+ return null;
311
331
  }
312
332
  }
313
333
  }
314
334
  }
315
335
  }
316
336
  catch {
317
- // Parsing failed, return truncated version of original data
337
+ // Parsing failed, don't simplify
318
338
  }
319
- return data.length > 200 ? data.substring(0, 200) + '...' : data;
339
+ // Could not simplify
340
+ return null;
320
341
  }
@@ -10,6 +10,7 @@
10
10
  * - Error formatting with stack trace truncation to prevent overly verbose logs
11
11
  * - MCP server-specific logging with serverName context
12
12
  * - Log rotation with date-based file naming and automatic cleanup
13
+ * - Caller location information (file name and line number)
13
14
  *
14
15
  * The logger supports four log levels: debug, info, warn, and error, with configurable
15
16
  * minimum log level threshold.
@@ -33,8 +34,20 @@ export declare class Logger {
33
34
  private level;
34
35
  private useStderr;
35
36
  private useColor;
37
+ private showCaller;
36
38
  private devLogger;
37
39
  constructor(level?: LogLevel);
40
+ /**
41
+ * Enable or disable caller information in logs.
42
+ * When enabled, logs will show the file name and line number where the log was called.
43
+ *
44
+ * @param show - Whether to show caller information
45
+ * @example
46
+ * ```typescript
47
+ * logger.setShowCaller(false); // Disable caller info
48
+ * ```
49
+ */
50
+ setShowCaller(show: boolean): void;
38
51
  /**
39
52
  * Enables development logging mode with file output and enhanced debugging.
40
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAY5C,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAA8B;gBAEnC,KAAK,GAAE,QAAiB;IAcpC;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO5E,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;;;;;;OASG;IACI,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO;IAK1C;;OAEG;IACH,OAAO,CAAC,GAAG;IAgDX;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD,OAAO,CAAC,qBAAqB;IAkB7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GACvC,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIvF;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIhF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIvC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/B"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAc5C,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAA8B;gBAEnC,KAAK,GAAE,QAAiB;IAoBpC;;;;;;;;;OASG;IACI,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIzC;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO5E,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;;;;;;OASG;IACI,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO;IAK1C;;OAEG;IACH,OAAO,CAAC,GAAG;IAuDX;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD,OAAO,CAAC,qBAAqB;IAkB7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GACvC,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuD3B;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIvF;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIhF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIvC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/B"}
@@ -10,6 +10,7 @@
10
10
  * - Error formatting with stack trace truncation to prevent overly verbose logs
11
11
  * - MCP server-specific logging with serverName context
12
12
  * - Log rotation with date-based file naming and automatic cleanup
13
+ * - Caller location information (file name and line number)
13
14
  *
14
15
  * The logger supports four log levels: debug, info, warn, and error, with configurable
15
16
  * minimum log level threshold.
@@ -28,12 +29,13 @@
28
29
  */
29
30
  import { DevLogger } from './dev-logger.js';
30
31
  import { LOG_MODULES } from './log-modules.js';
31
- import { createColoredLogMessage, createLogMessage, formatError, formatTimestamp, formatLogLevel, formatPid } from './log-formatter.js';
32
+ import { createColoredLogMessage, createLogMessage, formatError, formatTimestamp, formatLogLevel, formatPid, getCallerInfo, formatCallerInfo } from './log-formatter.js';
32
33
  import { setDevModeEnabled } from '../json-utils.js';
33
34
  export class Logger {
34
35
  level = 'info';
35
36
  useStderr = false;
36
37
  useColor = true;
38
+ showCaller = true;
37
39
  devLogger = new DevLogger();
38
40
  constructor(level = 'info') {
39
41
  this.level = level;
@@ -45,6 +47,24 @@ export class Logger {
45
47
  if (noColorEnv === 'true' || noColorEnv === '1' || noColorEnv === '') {
46
48
  this.setUseColor(false);
47
49
  }
50
+ // Check LOG_CALLER environment variable
51
+ const logCallerEnv = process.env.LOG_CALLER;
52
+ if (logCallerEnv === 'false' || logCallerEnv === '0') {
53
+ this.setShowCaller(false);
54
+ }
55
+ }
56
+ /**
57
+ * Enable or disable caller information in logs.
58
+ * When enabled, logs will show the file name and line number where the log was called.
59
+ *
60
+ * @param show - Whether to show caller information
61
+ * @example
62
+ * ```typescript
63
+ * logger.setShowCaller(false); // Disable caller info
64
+ * ```
65
+ */
66
+ setShowCaller(show) {
67
+ this.showCaller = show;
48
68
  }
49
69
  /**
50
70
  * Enables development logging mode with file output and enhanced debugging.
@@ -101,13 +121,19 @@ export class Logger {
101
121
  const formattedArgs = args.map((arg) => formatError(arg)).join(' ');
102
122
  fullMessage = `${message} ${formattedArgs}`;
103
123
  }
104
- const context = options
105
- ? {
106
- module: options.module,
107
- traceId: options.traceId,
108
- spanId: options.spanId
124
+ // Build context object
125
+ const context = {
126
+ ...(options?.module && { module: options.module }),
127
+ ...(options?.traceId && { traceId: options.traceId }),
128
+ ...(options?.spanId && { spanId: options.spanId })
129
+ };
130
+ // Add caller info if enabled
131
+ if (this.showCaller) {
132
+ const callerInfo = getCallerInfo(4); // Skip 4 frames to get to the actual caller
133
+ if (callerInfo) {
134
+ context.caller = formatCallerInfo(callerInfo);
109
135
  }
110
- : undefined;
136
+ }
111
137
  const coloredLogMsg = createColoredLogMessage(level, fullMessage, context);
112
138
  const plainLogMsg = createLogMessage(level, fullMessage, context);
113
139
  const consoleLogMsg = this.useColor ? coloredLogMsg : plainLogMsg;
@@ -256,10 +282,19 @@ export class Logger {
256
282
  * Contains the core logging logic originally in serverLog.
257
283
  */
258
284
  logSingleServerLine(level, serverName, message, context) {
285
+ // Build log context with server name
259
286
  const logContext = {
260
287
  ...context,
261
288
  serverName
262
289
  };
290
+ // Add caller info if enabled (only once per serverLog call would be better,
291
+ // but for consistency with multi-line logging, we add it for each line)
292
+ if (this.showCaller) {
293
+ const callerInfo = getCallerInfo(5); // Skip 5 frames to get to the actual caller
294
+ if (callerInfo) {
295
+ logContext.caller = formatCallerInfo(callerInfo);
296
+ }
297
+ }
263
298
  const coloredLogMsg = createColoredLogMessage(level, message, logContext);
264
299
  const plainLogMsg = createLogMessage(level, message, logContext);
265
300
  const consoleLogMsg = this.useColor ? coloredLogMsg : plainLogMsg;
@@ -6,66 +6,66 @@
6
6
  * every function call. It uses Node.js AsyncLocalStorage to maintain context
7
7
  * throughout the request lifecycle.
8
8
  *
9
- * The primary use case is storing client context information (sessionId, clientName,
9
+ * The primary use case is storing session context information (sessionId, clientName,
10
10
  * cwd, project, etc.) that needs to be accessible from any part of the application
11
11
  * during request processing.
12
12
  *
13
13
  * @module utils/request-context
14
14
  */
15
15
  import { AsyncLocalStorage } from 'async_hooks';
16
- import type { ClientContext } from '../../shared/types/client.types.js';
16
+ import type { SessionContext } from '../../shared/types/session-context.types.js';
17
17
  /**
18
18
  * AsyncLocalStorage instance for storing request context.
19
19
  *
20
- * This storage holds the ClientContext object for the current request and
20
+ * This storage holds the SessionContext object for the current request and
21
21
  * makes it available throughout the entire request processing chain,
22
22
  * including asynchronous operations and nested function calls.
23
23
  *
24
24
  * @example
25
25
  * ```typescript
26
26
  * // In route handler
27
- * await requestContext.run(clientContext, async () => {
28
- * // Any code executed here can access the client context
29
- * const ctx = getClientContext();
27
+ * await requestContext.run(sessionContext, async () => {
28
+ * // Any code executed here can access the session context
29
+ * const ctx = getSessionContext();
30
30
  * console.log(ctx.sessionId);
31
31
  * });
32
32
  * ```
33
33
  */
34
- export declare const requestContext: AsyncLocalStorage<ClientContext>;
34
+ export declare const requestContext: AsyncLocalStorage<SessionContext>;
35
35
  /**
36
- * Retrieves the current request's client context.
36
+ * Retrieves the current request's session context.
37
37
  *
38
- * This function returns the ClientContext object stored in the AsyncLocalStorage
38
+ * This function returns the SessionContext object stored in the AsyncLocalStorage
39
39
  * for the current request. It should only be called within a request context
40
40
  * that has been established using requestContext.run().
41
41
  *
42
- * @returns {ClientContext | undefined} The current request's client context, or undefined if not in a request context
42
+ * @returns {SessionContext | undefined} The current request's session context, or undefined if not in a request context
43
43
  *
44
44
  * @example
45
45
  * ```typescript
46
- * const context = getClientContext();
46
+ * const context = getSessionContext();
47
47
  * if (context) {
48
48
  * console.log(`Processing request for session: ${context.sessionId}`);
49
49
  * }
50
50
  * ```
51
51
  */
52
- export declare function getClientContext(): ClientContext | undefined;
52
+ export declare function getSessionContext(): SessionContext | undefined;
53
53
  /**
54
54
  * Retrieves the current request's working directory (cwd).
55
55
  *
56
56
  * This is a convenience function that extracts the cwd property from the
57
- * current request's client context. It's commonly used in file operations
58
- * that need to respect the client's current working directory.
57
+ * current request's session context. It's commonly used in file operations
58
+ * that need to respect the session's current working directory.
59
59
  *
60
60
  * @returns {string | undefined} The current request's working directory, or undefined if not available
61
61
  *
62
62
  * @example
63
63
  * ```typescript
64
- * const cwd = getClientCwd();
64
+ * const cwd = getSessionCwd();
65
65
  * if (cwd) {
66
66
  * const fullPath = path.join(cwd, relativePath);
67
67
  * }
68
68
  * ```
69
69
  */
70
- export declare function getClientCwd(): string | undefined;
70
+ export declare function getSessionCwd(): string | undefined;
71
71
  //# sourceMappingURL=request-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../../../src/utils/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,kCAAyC,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAE5D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD"}
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../../../src/utils/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,mCAA0C,CAAC;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD"}