@apify/mcpc 0.1.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.
Files changed (178) hide show
  1. package/.claude/settings.local.json +36 -0
  2. package/.eslintrc.json +44 -0
  3. package/.idea/codeStyles/Project.xml +60 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +11 -0
  6. package/.idea/prettier.xml +6 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/.idea/workspace.xml +572 -0
  9. package/LICENSE +201 -0
  10. package/PHASE1-SUMMARY.md +269 -0
  11. package/PUBLISHING.md +111 -0
  12. package/README.md +1056 -0
  13. package/TESTING.md +212 -0
  14. package/TODOs.md +94 -0
  15. package/bin/mcpc +9 -0
  16. package/bin/mcpc-bridge +9 -0
  17. package/dist/bridge/index.d.ts +3 -0
  18. package/dist/bridge/index.d.ts.map +1 -0
  19. package/dist/bridge/index.js +587 -0
  20. package/dist/bridge/index.js.map +1 -0
  21. package/dist/cli/commands/auth.d.ts +9 -0
  22. package/dist/cli/commands/auth.d.ts.map +1 -0
  23. package/dist/cli/commands/auth.js +81 -0
  24. package/dist/cli/commands/auth.js.map +1 -0
  25. package/dist/cli/commands/clean.d.ts +11 -0
  26. package/dist/cli/commands/clean.d.ts.map +1 -0
  27. package/dist/cli/commands/clean.js +224 -0
  28. package/dist/cli/commands/clean.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +8 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +8 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/logging.d.ts +3 -0
  34. package/dist/cli/commands/logging.d.ts.map +1 -0
  35. package/dist/cli/commands/logging.js +22 -0
  36. package/dist/cli/commands/logging.js.map +1 -0
  37. package/dist/cli/commands/prompts.d.ts +6 -0
  38. package/dist/cli/commands/prompts.d.ts.map +1 -0
  39. package/dist/cli/commands/prompts.js +27 -0
  40. package/dist/cli/commands/prompts.js.map +1 -0
  41. package/dist/cli/commands/resources.d.ts +11 -0
  42. package/dist/cli/commands/resources.d.ts.map +1 -0
  43. package/dist/cli/commands/resources.js +70 -0
  44. package/dist/cli/commands/resources.js.map +1 -0
  45. package/dist/cli/commands/sessions.d.ts +28 -0
  46. package/dist/cli/commands/sessions.d.ts.map +1 -0
  47. package/dist/cli/commands/sessions.js +356 -0
  48. package/dist/cli/commands/sessions.js.map +1 -0
  49. package/dist/cli/commands/tools.d.ts +8 -0
  50. package/dist/cli/commands/tools.d.ts.map +1 -0
  51. package/dist/cli/commands/tools.js +54 -0
  52. package/dist/cli/commands/tools.js.map +1 -0
  53. package/dist/cli/commands/utilities.d.ts +3 -0
  54. package/dist/cli/commands/utilities.d.ts.map +1 -0
  55. package/dist/cli/commands/utilities.js +20 -0
  56. package/dist/cli/commands/utilities.js.map +1 -0
  57. package/dist/cli/helpers.d.ts +18 -0
  58. package/dist/cli/helpers.d.ts.map +1 -0
  59. package/dist/cli/helpers.js +165 -0
  60. package/dist/cli/helpers.js.map +1 -0
  61. package/dist/cli/index.d.ts +3 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +326 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/output.d.ts +18 -0
  66. package/dist/cli/output.d.ts.map +1 -0
  67. package/dist/cli/output.js +221 -0
  68. package/dist/cli/output.js.map +1 -0
  69. package/dist/cli/parser.d.ts +19 -0
  70. package/dist/cli/parser.d.ts.map +1 -0
  71. package/dist/cli/parser.js +168 -0
  72. package/dist/cli/parser.js.map +1 -0
  73. package/dist/cli/shell-parser.d.ts +5 -0
  74. package/dist/cli/shell-parser.d.ts.map +1 -0
  75. package/dist/cli/shell-parser.js +38 -0
  76. package/dist/cli/shell-parser.js.map +1 -0
  77. package/dist/cli/shell.d.ts +2 -0
  78. package/dist/cli/shell.d.ts.map +1 -0
  79. package/dist/cli/shell.js +277 -0
  80. package/dist/cli/shell.js.map +1 -0
  81. package/dist/cli/tool-result.d.ts +2 -0
  82. package/dist/cli/tool-result.d.ts.map +1 -0
  83. package/dist/cli/tool-result.js +19 -0
  84. package/dist/cli/tool-result.js.map +1 -0
  85. package/dist/core/factory.d.ts +19 -0
  86. package/dist/core/factory.d.ts.map +1 -0
  87. package/dist/core/factory.js +55 -0
  88. package/dist/core/factory.js.map +1 -0
  89. package/dist/core/index.d.ts +4 -0
  90. package/dist/core/index.d.ts.map +1 -0
  91. package/dist/core/index.js +4 -0
  92. package/dist/core/index.js.map +1 -0
  93. package/dist/core/mcp-client.d.ts +30 -0
  94. package/dist/core/mcp-client.d.ts.map +1 -0
  95. package/dist/core/mcp-client.js +215 -0
  96. package/dist/core/mcp-client.js.map +1 -0
  97. package/dist/core/transports.d.ts +12 -0
  98. package/dist/core/transports.d.ts.map +1 -0
  99. package/dist/core/transports.js +65 -0
  100. package/dist/core/transports.js.map +1 -0
  101. package/dist/lib/auth/auth-profiles.d.ts +7 -0
  102. package/dist/lib/auth/auth-profiles.d.ts.map +1 -0
  103. package/dist/lib/auth/auth-profiles.js +105 -0
  104. package/dist/lib/auth/auth-profiles.js.map +1 -0
  105. package/dist/lib/auth/keychain.d.ts +22 -0
  106. package/dist/lib/auth/keychain.d.ts.map +1 -0
  107. package/dist/lib/auth/keychain.js +92 -0
  108. package/dist/lib/auth/keychain.js.map +1 -0
  109. package/dist/lib/auth/oauth-flow.d.ts +7 -0
  110. package/dist/lib/auth/oauth-flow.d.ts.map +1 -0
  111. package/dist/lib/auth/oauth-flow.js +236 -0
  112. package/dist/lib/auth/oauth-flow.js.map +1 -0
  113. package/dist/lib/auth/oauth-provider.d.ts +24 -0
  114. package/dist/lib/auth/oauth-provider.d.ts.map +1 -0
  115. package/dist/lib/auth/oauth-provider.js +144 -0
  116. package/dist/lib/auth/oauth-provider.js.map +1 -0
  117. package/dist/lib/auth/oauth-token-manager.d.ts +25 -0
  118. package/dist/lib/auth/oauth-token-manager.d.ts.map +1 -0
  119. package/dist/lib/auth/oauth-token-manager.js +70 -0
  120. package/dist/lib/auth/oauth-token-manager.js.map +1 -0
  121. package/dist/lib/auth/oauth-utils.d.ts +14 -0
  122. package/dist/lib/auth/oauth-utils.d.ts.map +1 -0
  123. package/dist/lib/auth/oauth-utils.js +68 -0
  124. package/dist/lib/auth/oauth-utils.js.map +1 -0
  125. package/dist/lib/auth/token-refresh.d.ts +2 -0
  126. package/dist/lib/auth/token-refresh.d.ts.map +1 -0
  127. package/dist/lib/auth/token-refresh.js +70 -0
  128. package/dist/lib/auth/token-refresh.js.map +1 -0
  129. package/dist/lib/bridge-client.d.ts +23 -0
  130. package/dist/lib/bridge-client.d.ts.map +1 -0
  131. package/dist/lib/bridge-client.js +181 -0
  132. package/dist/lib/bridge-client.js.map +1 -0
  133. package/dist/lib/bridge-manager.d.ts +17 -0
  134. package/dist/lib/bridge-manager.d.ts.map +1 -0
  135. package/dist/lib/bridge-manager.js +240 -0
  136. package/dist/lib/bridge-manager.js.map +1 -0
  137. package/dist/lib/config.d.ts +6 -0
  138. package/dist/lib/config.d.ts.map +1 -0
  139. package/dist/lib/config.js +116 -0
  140. package/dist/lib/config.js.map +1 -0
  141. package/dist/lib/errors.d.ts +23 -0
  142. package/dist/lib/errors.d.ts.map +1 -0
  143. package/dist/lib/errors.js +81 -0
  144. package/dist/lib/errors.js.map +1 -0
  145. package/dist/lib/file-lock.d.ts +2 -0
  146. package/dist/lib/file-lock.d.ts.map +1 -0
  147. package/dist/lib/file-lock.js +46 -0
  148. package/dist/lib/file-lock.js.map +1 -0
  149. package/dist/lib/file-logger.d.ts +19 -0
  150. package/dist/lib/file-logger.d.ts.map +1 -0
  151. package/dist/lib/file-logger.js +126 -0
  152. package/dist/lib/file-logger.js.map +1 -0
  153. package/dist/lib/index.d.ts +6 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +6 -0
  156. package/dist/lib/index.js.map +1 -0
  157. package/dist/lib/logger.d.ts +24 -0
  158. package/dist/lib/logger.d.ts.map +1 -0
  159. package/dist/lib/logger.js +189 -0
  160. package/dist/lib/logger.js.map +1 -0
  161. package/dist/lib/session-client.d.ts +28 -0
  162. package/dist/lib/session-client.d.ts.map +1 -0
  163. package/dist/lib/session-client.js +104 -0
  164. package/dist/lib/session-client.js.map +1 -0
  165. package/dist/lib/sessions.d.ts +9 -0
  166. package/dist/lib/sessions.d.ts.map +1 -0
  167. package/dist/lib/sessions.js +116 -0
  168. package/dist/lib/sessions.js.map +1 -0
  169. package/dist/lib/types.d.ts +117 -0
  170. package/dist/lib/types.d.ts.map +1 -0
  171. package/dist/lib/types.js +2 -0
  172. package/dist/lib/types.js.map +1 -0
  173. package/dist/lib/utils.d.ts +29 -0
  174. package/dist/lib/utils.d.ts.map +1 -0
  175. package/dist/lib/utils.js +173 -0
  176. package/dist/lib/utils.js.map +1 -0
  177. package/package.json +71 -0
  178. package/tsconfig.test.json +11 -0
@@ -0,0 +1,189 @@
1
+ import { FileLogger } from './file-logger.js';
2
+ import { getLogsDir } from './utils.js';
3
+ import { join } from 'path';
4
+ import { inspect } from 'util';
5
+ let isVerbose = false;
6
+ let fileLogger = null;
7
+ export function setVerbose(verbose) {
8
+ isVerbose = verbose;
9
+ if (verbose) {
10
+ currentLogLevel = 'debug';
11
+ }
12
+ }
13
+ export function getVerbose() {
14
+ return isVerbose;
15
+ }
16
+ export async function initFileLogger(logFileName) {
17
+ if (fileLogger) {
18
+ log('warn', 'Logging file already open?');
19
+ await fileLogger.close();
20
+ }
21
+ const filePath = join(getLogsDir(), logFileName);
22
+ fileLogger = new FileLogger({
23
+ filePath,
24
+ maxSize: 10 * 1024 * 1024,
25
+ maxFiles: 5,
26
+ });
27
+ await fileLogger.init();
28
+ }
29
+ export async function closeFileLogger() {
30
+ if (fileLogger) {
31
+ const copy = fileLogger;
32
+ fileLogger = null;
33
+ await copy.close();
34
+ }
35
+ }
36
+ const LOG_LEVELS = {
37
+ debug: 0,
38
+ info: 1,
39
+ warn: 2,
40
+ error: 3,
41
+ };
42
+ let currentLogLevel = 'info';
43
+ export function setLogLevel(level) {
44
+ currentLogLevel = level;
45
+ }
46
+ function shouldLog(level) {
47
+ if (level === 'debug' && !isVerbose) {
48
+ return false;
49
+ }
50
+ return LOG_LEVELS[level] >= LOG_LEVELS[currentLogLevel];
51
+ }
52
+ function formatMessage(level, message, forFile = false) {
53
+ const includeTimestamp = forFile || isVerbose;
54
+ if (includeTimestamp) {
55
+ const timestamp = new Date().toISOString();
56
+ return `[${timestamp}] [${level.toUpperCase()}] ${message}`;
57
+ }
58
+ return message;
59
+ }
60
+ function formatExceptionChain(error, indent = '') {
61
+ const lines = [];
62
+ lines.push(`${indent}${error.name || 'Error'}: ${error.message}`);
63
+ if (error.stack) {
64
+ const stackLines = error.stack.split('\n').slice(1);
65
+ for (const line of stackLines) {
66
+ lines.push(`${indent}${line}`);
67
+ }
68
+ }
69
+ const extraProps = Object.getOwnPropertyNames(error).filter((p) => !['name', 'message', 'stack', 'cause'].includes(p));
70
+ if (extraProps.length > 0) {
71
+ for (const prop of extraProps) {
72
+ const value = error[prop];
73
+ lines.push(`${indent} ${prop}: ${inspect(value, { depth: 2, colors: false, compact: true })}`);
74
+ }
75
+ }
76
+ if ('cause' in error && error.cause) {
77
+ lines.push(`${indent}Cause:`);
78
+ if (error.cause instanceof Error) {
79
+ lines.push(formatExceptionChain(error.cause, indent + ' '));
80
+ }
81
+ else {
82
+ lines.push(`${indent} ${inspect(error.cause, { depth: 4, colors: false, compact: true })}`);
83
+ }
84
+ }
85
+ return lines.join('\n');
86
+ }
87
+ function formatArg(arg) {
88
+ if (typeof arg === 'string') {
89
+ return arg;
90
+ }
91
+ if (arg instanceof Error) {
92
+ return formatExceptionChain(arg);
93
+ }
94
+ if (typeof arg === 'object' && arg !== null) {
95
+ return inspect(arg, { depth: 4, colors: false, compact: true });
96
+ }
97
+ return JSON.stringify(arg);
98
+ }
99
+ function writeToFile(level, message, args) {
100
+ if (!fileLogger)
101
+ return;
102
+ let fullMessage = formatMessage(level, message, true);
103
+ if (args.length > 0) {
104
+ const argsStr = args.map(formatArg).join(' ');
105
+ fullMessage = `${fullMessage} ${argsStr}`;
106
+ }
107
+ fileLogger.write(fullMessage);
108
+ }
109
+ export function debug(message, ...args) {
110
+ if (shouldLog('debug')) {
111
+ console.error(formatMessage('debug', message), ...args);
112
+ }
113
+ writeToFile('debug', message, args);
114
+ }
115
+ export function info(message, ...args) {
116
+ if (shouldLog('info')) {
117
+ console.error(formatMessage('info', message), ...args);
118
+ }
119
+ writeToFile('info', message, args);
120
+ }
121
+ export function warn(message, ...args) {
122
+ if (shouldLog('warn')) {
123
+ console.error(formatMessage('warn', message), ...args);
124
+ }
125
+ writeToFile('warn', message, args);
126
+ }
127
+ export function error(message, ...args) {
128
+ if (shouldLog('error')) {
129
+ console.error(formatMessage('error', message), ...args);
130
+ }
131
+ writeToFile('error', message, args);
132
+ }
133
+ export function log(level, message, ...args) {
134
+ switch (level) {
135
+ case 'debug':
136
+ debug(message, ...args);
137
+ break;
138
+ case 'info':
139
+ info(message, ...args);
140
+ break;
141
+ case 'warn':
142
+ warn(message, ...args);
143
+ break;
144
+ case 'error':
145
+ error(message, ...args);
146
+ break;
147
+ }
148
+ }
149
+ export class Logger {
150
+ context;
151
+ constructor(context) {
152
+ this.context = context;
153
+ }
154
+ formatContext(message) {
155
+ return this.context ? `[${this.context}] ${message}` : message;
156
+ }
157
+ debug(message, ...args) {
158
+ debug(this.formatContext(message), ...args);
159
+ }
160
+ info(message, ...args) {
161
+ info(this.formatContext(message), ...args);
162
+ }
163
+ warn(message, ...args) {
164
+ warn(this.formatContext(message), ...args);
165
+ }
166
+ error(message, ...args) {
167
+ error(this.formatContext(message), ...args);
168
+ }
169
+ log(level, message, ...args) {
170
+ log(level, this.formatContext(message), ...args);
171
+ }
172
+ }
173
+ export function createLogger(context) {
174
+ return new Logger(context);
175
+ }
176
+ class NoOpLogger extends Logger {
177
+ constructor() {
178
+ super();
179
+ }
180
+ debug() { }
181
+ info() { }
182
+ warn() { }
183
+ error() { }
184
+ log() { }
185
+ }
186
+ export function createNoOpLogger() {
187
+ return new NoOpLogger();
188
+ }
189
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { ListToolsResult, CallToolResult, ListResourcesResult, ReadResourceResult, ListPromptsResult, GetPromptResult, LoggingLevel, IMcpClient, ServerInfo } from './types.js';
3
+ import type { ListResourceTemplatesResult } from '@modelcontextprotocol/sdk/types.js';
4
+ import { BridgeClient } from './bridge-client.js';
5
+ export declare class SessionClient extends EventEmitter implements IMcpClient {
6
+ private bridgeClient;
7
+ private sessionName;
8
+ constructor(sessionName: string, bridgeClient: BridgeClient);
9
+ private setupNotificationForwarding;
10
+ private withRetry;
11
+ close(): Promise<void>;
12
+ getServerInfo(): Promise<ServerInfo>;
13
+ ping(): Promise<void>;
14
+ listTools(cursor?: string): Promise<ListToolsResult>;
15
+ callTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
16
+ listResources(cursor?: string): Promise<ListResourcesResult>;
17
+ listResourceTemplates(cursor?: string): Promise<ListResourceTemplatesResult>;
18
+ readResource(uri: string): Promise<ReadResourceResult>;
19
+ subscribeResource(uri: string): Promise<void>;
20
+ unsubscribeResource(uri: string): Promise<void>;
21
+ listPrompts(cursor?: string): Promise<ListPromptsResult>;
22
+ getPrompt(name: string, args?: Record<string, string>): Promise<GetPromptResult>;
23
+ setLoggingLevel(level: LoggingLevel): Promise<void>;
24
+ getSDKClient(): never;
25
+ }
26
+ export declare function createSessionClient(sessionName: string): Promise<SessionClient>;
27
+ export declare function withSessionClient<T>(sessionName: string, callback: (client: IMcpClient) => Promise<T>): Promise<T>;
28
+ //# sourceMappingURL=session-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/lib/session-client.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,UAAU,EAEV,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAYlD,qBAAa,aAAc,SAAQ,YAAa,YAAW,UAAU;IACnE,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY;IAU3D,OAAO,CAAC,2BAA2B;YAkBrB,SAAS;IAsCjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAQpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOpD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAO/E,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO5D,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAO5E,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOtD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAOxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAOhF,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,YAAY,IAAI,KAAK;CAGtB;AAQD,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAUrF;AAMD,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,CAQZ"}
@@ -0,0 +1,104 @@
1
+ import { EventEmitter } from 'events';
2
+ import { BridgeClient } from './bridge-client.js';
3
+ import { ensureBridgeReady, restartBridge } from './bridge-manager.js';
4
+ import { getSession } from './sessions.js';
5
+ import { ClientError, NetworkError } from './errors.js';
6
+ import { createLogger } from './logger.js';
7
+ const logger = createLogger('session-client');
8
+ export class SessionClient extends EventEmitter {
9
+ bridgeClient;
10
+ sessionName;
11
+ constructor(sessionName, bridgeClient) {
12
+ super();
13
+ this.sessionName = sessionName;
14
+ this.bridgeClient = bridgeClient;
15
+ this.setupNotificationForwarding();
16
+ }
17
+ setupNotificationForwarding() {
18
+ this.bridgeClient.on('notification', (notification) => {
19
+ logger.debug(`Forwarding notification: ${notification.method}`);
20
+ this.emit('notification', notification);
21
+ });
22
+ }
23
+ async withRetry(operation, operationName) {
24
+ try {
25
+ return await operation();
26
+ }
27
+ catch (error) {
28
+ if (!(error instanceof NetworkError)) {
29
+ throw error;
30
+ }
31
+ logger.warn(`Socket error during ${operationName}, will restart bridge...`);
32
+ await this.bridgeClient.close();
33
+ await restartBridge(this.sessionName);
34
+ const session = await getSession(this.sessionName);
35
+ if (!session?.socketPath) {
36
+ throw new ClientError(`Session ${this.sessionName} not found after bridge restart`);
37
+ }
38
+ this.bridgeClient = new BridgeClient(session.socketPath);
39
+ this.setupNotificationForwarding();
40
+ await this.bridgeClient.connect();
41
+ logger.info(`Reconnected to bridge for ${this.sessionName}, retrying ${operationName}`);
42
+ return await operation();
43
+ }
44
+ }
45
+ async close() {
46
+ await this.bridgeClient.close();
47
+ }
48
+ async getServerInfo() {
49
+ return this.withRetry(() => this.bridgeClient.request('getServerInfo'), 'getServerInfo');
50
+ }
51
+ async ping() {
52
+ return this.withRetry(() => this.bridgeClient.request('ping').then(() => undefined), 'ping');
53
+ }
54
+ async listTools(cursor) {
55
+ return this.withRetry(() => this.bridgeClient.request('listTools', cursor), 'listTools');
56
+ }
57
+ async callTool(name, args) {
58
+ return this.withRetry(() => this.bridgeClient.request('callTool', { name, arguments: args }), 'callTool');
59
+ }
60
+ async listResources(cursor) {
61
+ return this.withRetry(() => this.bridgeClient.request('listResources', cursor), 'listResources');
62
+ }
63
+ async listResourceTemplates(cursor) {
64
+ return this.withRetry(() => this.bridgeClient.request('listResourceTemplates', cursor), 'listResourceTemplates');
65
+ }
66
+ async readResource(uri) {
67
+ return this.withRetry(() => this.bridgeClient.request('readResource', { uri }), 'readResource');
68
+ }
69
+ async subscribeResource(uri) {
70
+ return this.withRetry(() => this.bridgeClient.request('subscribeResource', { uri }).then(() => undefined), 'subscribeResource');
71
+ }
72
+ async unsubscribeResource(uri) {
73
+ return this.withRetry(() => this.bridgeClient.request('unsubscribeResource', { uri }).then(() => undefined), 'unsubscribeResource');
74
+ }
75
+ async listPrompts(cursor) {
76
+ return this.withRetry(() => this.bridgeClient.request('listPrompts', cursor), 'listPrompts');
77
+ }
78
+ async getPrompt(name, args) {
79
+ return this.withRetry(() => this.bridgeClient.request('getPrompt', { name, arguments: args }), 'getPrompt');
80
+ }
81
+ async setLoggingLevel(level) {
82
+ return this.withRetry(() => this.bridgeClient.request('setLoggingLevel', level).then(() => undefined), 'setLoggingLevel');
83
+ }
84
+ getSDKClient() {
85
+ throw new Error('SessionClient does not expose underlying SDK client');
86
+ }
87
+ }
88
+ export async function createSessionClient(sessionName) {
89
+ const socketPath = await ensureBridgeReady(sessionName);
90
+ const bridgeClient = new BridgeClient(socketPath);
91
+ await bridgeClient.connect();
92
+ logger.debug(`Created SessionClient for ${sessionName}`);
93
+ return new SessionClient(sessionName, bridgeClient);
94
+ }
95
+ export async function withSessionClient(sessionName, callback) {
96
+ const client = await createSessionClient(sessionName);
97
+ try {
98
+ return await callback(client);
99
+ }
100
+ finally {
101
+ await client.close();
102
+ }
103
+ }
104
+ //# sourceMappingURL=session-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-client.js","sourceRoot":"","sources":["../../src/lib/session-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { SessionData, SessionsStorage } from './types.js';
2
+ export declare function loadSessions(): Promise<SessionsStorage>;
3
+ export declare function listSessions(): Promise<SessionData[]>;
4
+ export declare function getSession(sessionName: string): Promise<SessionData | undefined>;
5
+ export declare function saveSession(sessionName: string, sessionData: Omit<SessionData, 'name'>): Promise<void>;
6
+ export declare function updateSession(sessionName: string, updates: Partial<Omit<SessionData, 'name' | 'createdAt'>>): Promise<void>;
7
+ export declare function deleteSession(sessionName: string): Promise<void>;
8
+ export declare function sessionExists(sessionName: string): Promise<boolean>;
9
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/lib/sessions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyE/D,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAG7D;AAKD,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAY3D;AAKD,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAGtF;AAOD,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAmBf;AAOD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,GACxD,OAAO,CAAC,IAAI,CAAC,CAqBf;AAMD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAetE;AAKD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE"}
@@ -0,0 +1,116 @@
1
+ import { readFile, writeFile, rename, unlink } from 'fs/promises';
2
+ import { tmpdir } from 'os';
3
+ import { join } from 'path';
4
+ import { getSessionsFilePath, fileExists, ensureDir, getMcpcHome } from './utils.js';
5
+ import { withFileLock } from './file-lock.js';
6
+ import { createLogger } from './logger.js';
7
+ import { ClientError } from './errors.js';
8
+ const logger = createLogger('sessions');
9
+ async function loadSessionsInternal() {
10
+ const filePath = getSessionsFilePath();
11
+ if (!(await fileExists(filePath))) {
12
+ logger.debug('Sessions file does not exist, returning empty sessions');
13
+ return { sessions: {} };
14
+ }
15
+ try {
16
+ const content = await readFile(filePath, 'utf-8');
17
+ const storage = JSON.parse(content);
18
+ if (!storage.sessions || typeof storage.sessions !== 'object') {
19
+ logger.warn('Invalid sessions file format, returning empty sessions');
20
+ return { sessions: {} };
21
+ }
22
+ return storage;
23
+ }
24
+ catch (error) {
25
+ logger.warn(`Failed to load sessions: ${error.message}`);
26
+ return { sessions: {} };
27
+ }
28
+ }
29
+ async function saveSessionsInternal(storage) {
30
+ const filePath = getSessionsFilePath();
31
+ await ensureDir(getMcpcHome());
32
+ const tempFile = join(tmpdir(), `mcpc-sessions-${Date.now()}-${process.pid}.json`);
33
+ try {
34
+ const content = JSON.stringify(storage, null, 2);
35
+ await writeFile(tempFile, content, 'utf-8');
36
+ await rename(tempFile, filePath);
37
+ logger.debug('Sessions saved successfully');
38
+ }
39
+ catch (error) {
40
+ try {
41
+ await unlink(tempFile);
42
+ }
43
+ catch {
44
+ }
45
+ throw new ClientError(`Failed to save sessions: ${error.message}`);
46
+ }
47
+ }
48
+ const SESSIONS_DEFAULT_CONTENT = JSON.stringify({ sessions: {} }, null, 2);
49
+ export async function loadSessions() {
50
+ const filePath = getSessionsFilePath();
51
+ return withFileLock(filePath, loadSessionsInternal, SESSIONS_DEFAULT_CONTENT);
52
+ }
53
+ export async function listSessions() {
54
+ const storage = await loadSessions();
55
+ const sessions = [];
56
+ for (const sessionName in storage.sessions) {
57
+ const session = storage.sessions[sessionName];
58
+ if (session) {
59
+ sessions.push(session);
60
+ }
61
+ }
62
+ return sessions;
63
+ }
64
+ export async function getSession(sessionName) {
65
+ const storage = await loadSessions();
66
+ return storage.sessions[sessionName];
67
+ }
68
+ export async function saveSession(sessionName, sessionData) {
69
+ const filePath = getSessionsFilePath();
70
+ return withFileLock(filePath, async () => {
71
+ const storage = await loadSessionsInternal();
72
+ const now = new Date().toISOString();
73
+ const existingSession = storage.sessions[sessionName];
74
+ storage.sessions[sessionName] = {
75
+ name: sessionName,
76
+ ...sessionData,
77
+ createdAt: existingSession?.createdAt || now,
78
+ };
79
+ await saveSessionsInternal(storage);
80
+ logger.debug(`Session ${sessionName} saved`);
81
+ }, SESSIONS_DEFAULT_CONTENT);
82
+ }
83
+ export async function updateSession(sessionName, updates) {
84
+ const filePath = getSessionsFilePath();
85
+ return withFileLock(filePath, async () => {
86
+ const storage = await loadSessionsInternal();
87
+ const existingSession = storage.sessions[sessionName];
88
+ if (!existingSession) {
89
+ throw new ClientError(`Session not found: ${sessionName}`);
90
+ }
91
+ storage.sessions[sessionName] = {
92
+ ...existingSession,
93
+ ...updates,
94
+ name: sessionName,
95
+ };
96
+ await saveSessionsInternal(storage);
97
+ logger.debug(`Session ${sessionName} updated`);
98
+ }, SESSIONS_DEFAULT_CONTENT);
99
+ }
100
+ export async function deleteSession(sessionName) {
101
+ const filePath = getSessionsFilePath();
102
+ return withFileLock(filePath, async () => {
103
+ const storage = await loadSessionsInternal();
104
+ if (!storage.sessions[sessionName]) {
105
+ throw new ClientError(`Session not found: ${sessionName}`);
106
+ }
107
+ delete storage.sessions[sessionName];
108
+ await saveSessionsInternal(storage);
109
+ logger.info(`Session ${sessionName} deleted`);
110
+ }, SESSIONS_DEFAULT_CONTENT);
111
+ }
112
+ export async function sessionExists(sessionName) {
113
+ const storage = await loadSessions();
114
+ return sessionName in storage.sessions;
115
+ }
116
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/lib/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import type { Tool, Resource, Prompt, PromptArgument, Implementation, ClientCapabilities, ServerCapabilities, InitializeRequest, InitializeResult, CallToolRequest, CallToolResult, ListToolsRequest, ListToolsResult, ListResourcesRequest, ListResourcesResult, ReadResourceRequest, ReadResourceResult, ListPromptsRequest, ListPromptsResult, GetPromptRequest, GetPromptResult, SubscribeRequest, UnsubscribeRequest, LoggingLevel, ListResourceTemplatesResult } from '@modelcontextprotocol/sdk/types.js';
2
+ export type { Tool, Resource, Prompt, PromptArgument, Implementation, ClientCapabilities, ServerCapabilities, InitializeRequest, InitializeResult, CallToolRequest, CallToolResult, ListToolsRequest, ListToolsResult, ListResourcesRequest, ListResourcesResult, ReadResourceRequest, ReadResourceResult, ListPromptsRequest, ListPromptsResult, GetPromptRequest, GetPromptResult, SubscribeRequest, UnsubscribeRequest, LoggingLevel, };
3
+ export { LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/sdk/types.js';
4
+ export type TransportType = 'stdio' | 'http';
5
+ export interface TransportConfig {
6
+ type: TransportType;
7
+ url?: string;
8
+ command?: string;
9
+ args?: string[];
10
+ env?: Record<string, string>;
11
+ headers?: Record<string, string>;
12
+ timeoutMs?: number;
13
+ }
14
+ export type SessionStatus = 'active' | 'expired';
15
+ export interface SessionData {
16
+ name: string;
17
+ target: string;
18
+ transport: TransportType;
19
+ profileName?: string;
20
+ headerCount?: number;
21
+ pid?: number;
22
+ socketPath?: string;
23
+ protocolVersion?: string;
24
+ serverInfo?: {
25
+ name: string;
26
+ version: string;
27
+ };
28
+ status?: SessionStatus;
29
+ createdAt: string;
30
+ lastSeenAt?: string;
31
+ }
32
+ export interface SessionsStorage {
33
+ sessions: Record<string, SessionData>;
34
+ }
35
+ export interface AuthProfile {
36
+ name: string;
37
+ serverUrl: string;
38
+ authType: 'oauth';
39
+ oauthIssuer: string;
40
+ scopes?: string[];
41
+ createdAt: string;
42
+ authenticatedAt?: string;
43
+ refreshedAt?: string;
44
+ }
45
+ export interface AuthProfilesStorage {
46
+ profiles: Record<string, Record<string, AuthProfile>>;
47
+ }
48
+ export type IpcMessageType = 'request' | 'response' | 'shutdown' | 'notification' | 'set-auth-credentials';
49
+ export interface AuthCredentials {
50
+ serverUrl: string;
51
+ profileName: string;
52
+ clientId?: string;
53
+ refreshToken?: string;
54
+ headers?: Record<string, string>;
55
+ }
56
+ export type NotificationType = 'tools/list_changed' | 'resources/list_changed' | 'resources/updated' | 'prompts/list_changed' | 'progress' | 'logging/message';
57
+ export interface NotificationData {
58
+ method: NotificationType;
59
+ params?: unknown;
60
+ }
61
+ export interface IpcMessage {
62
+ type: IpcMessageType;
63
+ id?: string;
64
+ method?: string;
65
+ params?: unknown;
66
+ result?: unknown;
67
+ notification?: NotificationData;
68
+ authCredentials?: AuthCredentials;
69
+ error?: {
70
+ code: number;
71
+ message: string;
72
+ data?: unknown;
73
+ };
74
+ }
75
+ export type OutputMode = 'human' | 'json';
76
+ export interface CommandOptions {
77
+ outputMode: OutputMode;
78
+ config?: string;
79
+ headers?: string[];
80
+ timeout?: number;
81
+ verbose?: boolean;
82
+ hideTarget?: boolean;
83
+ }
84
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
85
+ export interface McpConfig {
86
+ mcpServers: Record<string, McpServerConfig>;
87
+ }
88
+ export interface McpServerConfig {
89
+ url?: string;
90
+ command?: string;
91
+ args?: string[];
92
+ env?: Record<string, string>;
93
+ headers?: Record<string, string>;
94
+ timeout?: number;
95
+ }
96
+ export interface ServerInfo {
97
+ serverVersion?: Implementation;
98
+ capabilities?: ServerCapabilities;
99
+ instructions?: string;
100
+ protocolVersion?: string;
101
+ }
102
+ export interface IMcpClient {
103
+ close(): Promise<void>;
104
+ getServerInfo(): Promise<ServerInfo>;
105
+ ping(): Promise<void>;
106
+ listTools(cursor?: string): Promise<ListToolsResult>;
107
+ callTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
108
+ listResources(cursor?: string): Promise<ListResourcesResult>;
109
+ listResourceTemplates(cursor?: string): Promise<ListResourceTemplatesResult>;
110
+ readResource(uri: string): Promise<ReadResourceResult>;
111
+ subscribeResource(uri: string): Promise<void>;
112
+ unsubscribeResource(uri: string): Promise<void>;
113
+ listPrompts(cursor?: string): Promise<ListPromptsResult>;
114
+ getPrompt(name: string, args?: Record<string, string>): Promise<GetPromptResult>;
115
+ setLoggingLevel(level: LoggingLevel): Promise<void>;
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/sdk/types.js';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AA+DA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare function expandHome(filepath: string): string;
2
+ export declare function resolvePath(filepath: string, basePath?: string): string;
3
+ export declare function getMcpcHome(): string;
4
+ export declare function getSessionsFilePath(): string;
5
+ export declare function getBridgesDir(): string;
6
+ export declare function getLogsDir(): string;
7
+ export declare function getAuthProfilesFilePath(): string;
8
+ export declare function ensureDir(dirPath: string): Promise<void>;
9
+ export declare function fileExists(filepath: string): Promise<boolean>;
10
+ export declare function isFile(filepath: string): Promise<boolean>;
11
+ export declare function isDirectory(filepath: string): Promise<boolean>;
12
+ export declare function isValidHttpUrl(str: string): boolean;
13
+ export declare function normalizeServerUrl(str: string): string;
14
+ export declare function getAuthServerKey(urlString: string): string;
15
+ export declare function isValidSessionName(name: string): boolean;
16
+ export declare function isValidProfileName(name: string): boolean;
17
+ export declare function validateProfileName(profileName: string): void;
18
+ export declare function isValidResourceUri(uri: string): boolean;
19
+ export declare function sleep(ms: number): Promise<void>;
20
+ export declare function waitForFile(filepath: string, options?: {
21
+ timeoutMs?: number;
22
+ interval?: number;
23
+ }): Promise<void>;
24
+ export declare function parseJson<T = unknown>(json: string): T;
25
+ export declare function stringifyJson(obj: unknown, pretty?: boolean): string;
26
+ export declare function truncate(str: string, maxLength: number): string;
27
+ export declare function isProcessAlive(pid: number): boolean;
28
+ export declare function generateRequestId(): string;
29
+ //# sourceMappingURL=utils.d.ts.map