@platf/bridge 0.0.10 → 0.0.12

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.
@@ -80,9 +80,17 @@ export async function startStatefulBridge(args) {
80
80
  },
81
81
  });
82
82
  await server.connect(transport);
83
- const child = spawn(stdioCmd, { shell: true });
83
+ logger.info('[debug] Server connected to transport');
84
+ const child = spawn(stdioCmd, { shell: true, stdio: ['pipe', 'pipe', 'pipe'] });
85
+ logger.info(`[debug] Child spawned, pid=${child.pid}`);
84
86
  const pendingRequestIds = new Set();
85
87
  let stderrOutput = '';
88
+ child.on('spawn', () => {
89
+ logger.info(`[debug] Child spawn event fired, pid=${child.pid}`);
90
+ });
91
+ child.on('error', (err) => {
92
+ logger.error(`[debug] Child error event: ${err.message}`);
93
+ });
86
94
  child.on('exit', (code, signal) => {
87
95
  logger.error(`Child exited: code=${code}, signal=${signal}`);
88
96
  // Send JSON-RPC error responses for all pending requests
@@ -107,9 +115,12 @@ export async function startStatefulBridge(args) {
107
115
  });
108
116
  let buffer = '';
109
117
  child.stdout.on('data', (chunk) => {
110
- buffer += chunk.toString('utf8');
118
+ const chunkStr = chunk.toString('utf8');
119
+ logger.info(`[debug] stdout.on('data') received ${chunk.length} bytes: ${chunkStr.slice(0, 200)}...`);
120
+ buffer += chunkStr;
111
121
  const lines = buffer.split(/\r?\n/);
112
122
  buffer = lines.pop() ?? '';
123
+ logger.info(`[debug] Split into ${lines.length} lines, remaining buffer: ${buffer.length} chars`);
113
124
  for (const line of lines) {
114
125
  if (!line.trim())
115
126
  continue;
@@ -118,9 +129,10 @@ export async function startStatefulBridge(args) {
118
129
  if ('id' in jsonMsg && jsonMsg.id !== undefined) {
119
130
  pendingRequestIds.delete(jsonMsg.id);
120
131
  }
121
- logger.info('Child → HTTP:', line);
132
+ logger.info('Child → HTTP:', line.slice(0, 500));
122
133
  try {
123
134
  transport.send(jsonMsg);
135
+ logger.info('[debug] transport.send() succeeded');
124
136
  }
125
137
  catch (e) {
126
138
  logger.error('Failed to send to HTTP transport', e);
@@ -136,12 +148,23 @@ export async function startStatefulBridge(args) {
136
148
  stderrOutput += text;
137
149
  logger.error(`Child stderr: ${text}`);
138
150
  });
151
+ child.stdout.on('close', () => {
152
+ logger.info('[debug] child.stdout closed');
153
+ });
154
+ child.stdout.on('end', () => {
155
+ logger.info('[debug] child.stdout ended');
156
+ });
157
+ child.stdin.on('error', (err) => {
158
+ logger.error(`[debug] child.stdin error: ${err.message}`);
159
+ });
139
160
  transport.onmessage = (msg) => {
140
161
  logger.info(`HTTP → Child: ${JSON.stringify(msg)}`);
141
162
  if ('id' in msg && msg.id !== undefined) {
142
163
  pendingRequestIds.add(msg.id);
143
164
  }
144
- child.stdin.write(JSON.stringify(msg) + '\n');
165
+ const payload = JSON.stringify(msg) + '\n';
166
+ const written = child.stdin.write(payload);
167
+ logger.info(`[debug] stdin.write() returned ${written}, payload length=${payload.length}`);
145
168
  };
146
169
  transport.onclose = () => {
147
170
  logger.info(`HTTP connection closed (session ${sessionId})`);
@@ -1 +1 @@
1
- {"version":3,"file":"statefulBridge.js","sourceRoot":"","sources":["../../src/gateways/statefulBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statefulBridge.js","sourceRoot":"","sources":["../../src/gateways/statefulBridge.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,31 @@ export function createDiscoveryRouter(auth, logger) {
22
22
  *
23
23
  * Handles both root and path-suffixed variants (e.g. /.well-known/oauth-protected-resource/mcp)
24
24
  * as required by the MCP SDK for path-based resource discovery.
25
+ *
26
+ * The `resource` field MUST match the URL the client is accessing (RFC 9728 §2).
27
+ * For path-suffixed requests like /.well-known/oauth-protected-resource/mcp,
28
+ * the resource is the path after the well-known prefix.
25
29
  */
26
- router.get('/.well-known/oauth-protected-resource*', (req, res) => {
30
+ router.get('/.well-known/oauth-protected-resource', (req, res) => {
31
+ // Exact match — client is looking for the root resource
32
+ // Return /mcp as that's our protected endpoint
33
+ const scheme = req.protocol;
34
+ const host = req.get('host');
35
+ const resourceMetadata = {
36
+ resource: `${scheme}://${host}/mcp`,
37
+ authorization_servers: [auth.issuer],
38
+ scopes_supported: ['openid', 'profile', 'email'],
39
+ bearer_methods_supported: ['header'],
40
+ };
41
+ res.json(resourceMetadata);
42
+ });
43
+ router.get('/.well-known/oauth-protected-resource/*', (req, res) => {
44
+ // Path-suffixed request — the suffix IS the protected resource path
27
45
  const scheme = req.protocol;
28
46
  const host = req.get('host');
47
+ const resourcePath = '/' + req.params[0];
29
48
  const resourceMetadata = {
30
- resource: `${scheme}://${host}/`,
49
+ resource: `${scheme}://${host}${resourcePath}`,
31
50
  authorization_servers: [auth.issuer],
32
51
  scopes_supported: ['openid', 'profile', 'email'],
33
52
  bearer_methods_supported: ['header'],
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryRoutes.js","sourceRoot":"","sources":["../../src/lib/discoveryRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discoveryRoutes.js","sourceRoot":"","sources":["../../src/lib/discoveryRoutes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platf/bridge",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "Stdio-to-Streamable HTTP bridge for MCP servers — Platf AI Hub",
5
5
  "module": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -128,11 +128,22 @@ export async function startStatefulBridge(args: StatefulBridgeArgs) {
128
128
  })
129
129
 
130
130
  await server.connect(transport)
131
- const child = spawn(stdioCmd, { shell: true })
131
+ logger.info('[debug] Server connected to transport')
132
+
133
+ const child = spawn(stdioCmd, { shell: true, stdio: ['pipe', 'pipe', 'pipe'] })
134
+ logger.info(`[debug] Child spawned, pid=${child.pid}`)
132
135
 
133
136
  const pendingRequestIds = new Set<string | number>()
134
137
  let stderrOutput = ''
135
138
 
139
+ child.on('spawn', () => {
140
+ logger.info(`[debug] Child spawn event fired, pid=${child.pid}`)
141
+ })
142
+
143
+ child.on('error', (err) => {
144
+ logger.error(`[debug] Child error event: ${err.message}`)
145
+ })
146
+
136
147
  child.on('exit', (code, signal) => {
137
148
  logger.error(`Child exited: code=${code}, signal=${signal}`)
138
149
 
@@ -159,9 +170,12 @@ export async function startStatefulBridge(args: StatefulBridgeArgs) {
159
170
 
160
171
  let buffer = ''
161
172
  child.stdout.on('data', (chunk: Buffer) => {
162
- buffer += chunk.toString('utf8')
173
+ const chunkStr = chunk.toString('utf8')
174
+ logger.info(`[debug] stdout.on('data') received ${chunk.length} bytes: ${chunkStr.slice(0, 200)}...`)
175
+ buffer += chunkStr
163
176
  const lines = buffer.split(/\r?\n/)
164
177
  buffer = lines.pop() ?? ''
178
+ logger.info(`[debug] Split into ${lines.length} lines, remaining buffer: ${buffer.length} chars`)
165
179
 
166
180
  for (const line of lines) {
167
181
  if (!line.trim()) continue
@@ -170,9 +184,10 @@ export async function startStatefulBridge(args: StatefulBridgeArgs) {
170
184
  if ('id' in jsonMsg && jsonMsg.id !== undefined) {
171
185
  pendingRequestIds.delete(jsonMsg.id)
172
186
  }
173
- logger.info('Child → HTTP:', line)
187
+ logger.info('Child → HTTP:', line.slice(0, 500))
174
188
  try {
175
189
  transport.send(jsonMsg)
190
+ logger.info('[debug] transport.send() succeeded')
176
191
  } catch (e) {
177
192
  logger.error('Failed to send to HTTP transport', e)
178
193
  }
@@ -188,12 +203,26 @@ export async function startStatefulBridge(args: StatefulBridgeArgs) {
188
203
  logger.error(`Child stderr: ${text}`)
189
204
  })
190
205
 
206
+ child.stdout.on('close', () => {
207
+ logger.info('[debug] child.stdout closed')
208
+ })
209
+
210
+ child.stdout.on('end', () => {
211
+ logger.info('[debug] child.stdout ended')
212
+ })
213
+
214
+ child.stdin.on('error', (err) => {
215
+ logger.error(`[debug] child.stdin error: ${err.message}`)
216
+ })
217
+
191
218
  transport.onmessage = (msg: JSONRPCMessage) => {
192
219
  logger.info(`HTTP → Child: ${JSON.stringify(msg)}`)
193
220
  if ('id' in msg && msg.id !== undefined) {
194
221
  pendingRequestIds.add(msg.id as string | number)
195
222
  }
196
- child.stdin.write(JSON.stringify(msg) + '\n')
223
+ const payload = JSON.stringify(msg) + '\n'
224
+ const written = child.stdin.write(payload)
225
+ logger.info(`[debug] stdin.write() returned ${written}, payload length=${payload.length}`)
197
226
  }
198
227
 
199
228
  transport.onclose = () => {
@@ -26,12 +26,32 @@ export function createDiscoveryRouter(auth: AuthConfig, logger: Logger): Router
26
26
  *
27
27
  * Handles both root and path-suffixed variants (e.g. /.well-known/oauth-protected-resource/mcp)
28
28
  * as required by the MCP SDK for path-based resource discovery.
29
+ *
30
+ * The `resource` field MUST match the URL the client is accessing (RFC 9728 §2).
31
+ * For path-suffixed requests like /.well-known/oauth-protected-resource/mcp,
32
+ * the resource is the path after the well-known prefix.
29
33
  */
30
- router.get('/.well-known/oauth-protected-resource*', (req: Request, res: Response) => {
34
+ router.get('/.well-known/oauth-protected-resource', (req: Request, res: Response) => {
35
+ // Exact match — client is looking for the root resource
36
+ // Return /mcp as that's our protected endpoint
37
+ const scheme = req.protocol
38
+ const host = req.get('host')
39
+ const resourceMetadata = {
40
+ resource: `${scheme}://${host}/mcp`,
41
+ authorization_servers: [auth.issuer],
42
+ scopes_supported: ['openid', 'profile', 'email'],
43
+ bearer_methods_supported: ['header'],
44
+ }
45
+ res.json(resourceMetadata)
46
+ })
47
+
48
+ router.get('/.well-known/oauth-protected-resource/*', (req: Request, res: Response) => {
49
+ // Path-suffixed request — the suffix IS the protected resource path
31
50
  const scheme = req.protocol
32
51
  const host = req.get('host')
52
+ const resourcePath = '/' + req.params[0]
33
53
  const resourceMetadata = {
34
- resource: `${scheme}://${host}/`,
54
+ resource: `${scheme}://${host}${resourcePath}`,
35
55
  authorization_servers: [auth.issuer],
36
56
  scopes_supported: ['openid', 'profile', 'email'],
37
57
  bearer_methods_supported: ['header'],