@platf/bridge 0.0.19 → 0.0.20

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.
@@ -29,6 +29,7 @@ export function createApp(options) {
29
29
  const app = express();
30
30
  app.set('trust proxy', true);
31
31
  app.use(express.json());
32
+ app.use(express.urlencoded({ extended: true }));
32
33
  // CORS
33
34
  if (corsOrigin) {
34
35
  app.use(cors({ origin: corsOrigin, exposedHeaders: ['Mcp-Session-Id'] }));
@@ -1 +1 @@
1
- {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/lib/express.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAwC,MAAM,SAAS,CAAA;AAC9D,OAAO,IAA0B,MAAM,MAAM,CAAA;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAY1D,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAa,EAAE,OAA+B,EAAE,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE/E,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;IACrB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAEvB,OAAO;IACP,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,IAAI,CAAC,sBAAsB,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACvE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACxB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,yBAAyB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,kDAAkD;QAClD,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5C,mEAAmE;QACnE,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7C,8BAA8B;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/lib/express.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAwC,MAAM,SAAS,CAAA;AAC9D,OAAO,IAA0B,MAAM,MAAM,CAAA;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAY1D,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAa,EAAE,OAA+B,EAAE,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE/E,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;IACrB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACvB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/C,OAAO;IACP,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;QACzE,MAAM,CAAC,IAAI,CAAC,sBAAsB,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACvE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACxB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,yBAAyB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,kDAAkD;QAClD,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5C,mEAAmE;QACnE,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7C,8BAA8B;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { Logger } from '../types.js';
1
+ import type { Logger } from '@/types.js';
2
2
  export declare function parseHeaders(rawHeaders: (string | number)[], logger: Logger): Record<string, string>;
@@ -38,17 +38,20 @@ export function createOAuthProxyRouter(auth, logger) {
38
38
  router.post('/token', async (req, res) => {
39
39
  try {
40
40
  const upstreamUrl = `${auth.issuer}/token`;
41
- logger.info('[oauth-proxy] Proxying /token to upstream');
41
+ logger.info(`[oauth-proxy] Proxying /token to ${upstreamUrl}`);
42
+ const requestBody = req.get('Content-Type')?.includes('application/json')
43
+ ? JSON.stringify(req.body)
44
+ : new URLSearchParams(req.body).toString();
45
+ logger.info(`[oauth-proxy] Request body: ${requestBody}`);
42
46
  const upstreamRes = await fetch(upstreamUrl, {
43
47
  method: 'POST',
44
48
  headers: {
45
49
  'Content-Type': req.get('Content-Type') || 'application/x-www-form-urlencoded',
46
50
  },
47
- body: req.get('Content-Type')?.includes('application/json')
48
- ? JSON.stringify(req.body)
49
- : new URLSearchParams(req.body).toString(),
51
+ body: requestBody,
50
52
  });
51
53
  const data = await upstreamRes.text();
54
+ logger.info(`[oauth-proxy] Upstream response: ${upstreamRes.status} ${data.substring(0, 200)}`);
52
55
  res.status(upstreamRes.status);
53
56
  res.set('Content-Type', upstreamRes.headers.get('Content-Type') || 'application/json');
54
57
  res.send(data);
@@ -1 +1 @@
1
- {"version":3,"file":"oauthProxy.js","sourceRoot":"","sources":["../../src/lib/oauthProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAA;AAG7D,MAAM,UAAU,sBAAsB,CAAC,IAAgB,EAAE,MAAc;IACrE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;IAEvB;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,CAAC,CAAA;QACvD,oCAAoC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QAC/D,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAA;YAC1C,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;YAExD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,mCAAmC;iBAC/E;gBACD,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC;oBACzD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,IAA8B,CAAC,CAAC,QAAQ,EAAE;aACvE,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAA;YACrC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAC9B,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,CAAA;YACtF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,OAAO,CAAA;YACzC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAA;YACrC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA;YACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"oauthProxy.js","sourceRoot":"","sources":["../../src/lib/oauthProxy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Logger } from '../types.js';
1
+ import type { Logger } from '@/types.js';
2
2
  export interface OnSignalsOptions {
3
3
  logger: Logger;
4
4
  cleanup?: () => void;
@@ -1,4 +1,4 @@
1
- import type { Logger } from '../types.js';
1
+ import type { Logger } from '@/types.js';
2
2
  export declare class SessionAccessCounter {
3
3
  private readonly timeoutMs;
4
4
  private readonly cleanup;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platf/bridge",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
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",
@@ -45,6 +45,7 @@ export function createApp(options: CreateAppOptions): Express {
45
45
  const app = express()
46
46
  app.set('trust proxy', true)
47
47
  app.use(express.json())
48
+ app.use(express.urlencoded({ extended: true }))
48
49
 
49
50
  // CORS
50
51
  if (corsOrigin) {
@@ -1,4 +1,4 @@
1
- import type { Logger } from '../types.js'
1
+ import type { Logger } from '@/types.js'
2
2
 
3
3
  export function parseHeaders(
4
4
  rawHeaders: (string | number)[],
@@ -43,19 +43,25 @@ export function createOAuthProxyRouter(auth: AuthConfig, logger: Logger): Router
43
43
  router.post('/token', async (req: Request, res: Response) => {
44
44
  try {
45
45
  const upstreamUrl = `${auth.issuer}/token`
46
- logger.info('[oauth-proxy] Proxying /token to upstream')
46
+ logger.info(`[oauth-proxy] Proxying /token to ${upstreamUrl}`)
47
+
48
+ const requestBody = req.get('Content-Type')?.includes('application/json')
49
+ ? JSON.stringify(req.body)
50
+ : new URLSearchParams(req.body as Record<string, string>).toString()
51
+
52
+ logger.info(`[oauth-proxy] Request body: ${requestBody}`)
47
53
 
48
54
  const upstreamRes = await fetch(upstreamUrl, {
49
55
  method: 'POST',
50
56
  headers: {
51
57
  'Content-Type': req.get('Content-Type') || 'application/x-www-form-urlencoded',
52
58
  },
53
- body: req.get('Content-Type')?.includes('application/json')
54
- ? JSON.stringify(req.body)
55
- : new URLSearchParams(req.body as Record<string, string>).toString(),
59
+ body: requestBody,
56
60
  })
57
61
 
58
62
  const data = await upstreamRes.text()
63
+ logger.info(`[oauth-proxy] Upstream response: ${upstreamRes.status} ${data.substring(0, 200)}`)
64
+
59
65
  res.status(upstreamRes.status)
60
66
  res.set('Content-Type', upstreamRes.headers.get('Content-Type') || 'application/json')
61
67
  res.send(data)
@@ -1,4 +1,4 @@
1
- import type { Logger } from '../types.js'
1
+ import type { Logger } from '@/types.js'
2
2
 
3
3
  export interface OnSignalsOptions {
4
4
  logger: Logger
@@ -1,4 +1,4 @@
1
- import type { Logger } from '../types.js'
1
+ import type { Logger } from '@/types.js'
2
2
 
3
3
  export class SessionAccessCounter {
4
4
  private sessions = new Map<