@mcp-fe/mcp-worker 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -6
- package/index.js +353 -155
- package/mcp-service-worker.js +28101 -29
- package/mcp-shared-worker.js +28146 -45
- package/package.json +1 -1
- package/src/index.d.ts +5 -0
- package/src/index.d.ts.map +1 -0
- package/src/lib/database.d.ts.map +1 -0
- package/{lib → src/lib}/mcp-controller.d.ts +11 -0
- package/src/lib/mcp-controller.d.ts.map +1 -0
- package/{lib → src/lib}/mcp-server.d.ts +4 -0
- package/src/lib/mcp-server.d.ts.map +1 -0
- package/src/lib/websocket-transport.d.ts.map +1 -0
- package/src/lib/worker-client.d.ts +69 -0
- package/src/lib/worker-client.d.ts.map +1 -0
- package/src/mcp-service-worker.d.ts.map +1 -0
- package/src/mcp-shared-worker.d.ts.map +1 -0
- package/database.js +0 -49
- package/database.js.map +0 -1
- package/index.d.ts +0 -3
- package/index.d.ts.map +0 -1
- package/index.js.map +0 -1
- package/lib/database.d.ts.map +0 -1
- package/lib/mcp-controller.d.ts.map +0 -1
- package/lib/mcp-server.d.ts.map +0 -1
- package/lib/websocket-transport.d.ts.map +0 -1
- package/lib/worker-client.d.ts +0 -20
- package/lib/worker-client.d.ts.map +0 -1
- package/mcp-controller.js +0 -10565
- package/mcp-controller.js.map +0 -1
- package/mcp-service-worker.d.ts.map +0 -1
- package/mcp-service-worker.js.map +0 -1
- package/mcp-shared-worker.d.ts.map +0 -1
- package/mcp-shared-worker.js.map +0 -1
- /package/{lib → src/lib}/database.d.ts +0 -0
- /package/{lib → src/lib}/websocket-transport.d.ts +0 -0
- /package/{mcp-service-worker.d.ts → src/mcp-service-worker.d.ts} +0 -0
- /package/{mcp-shared-worker.d.ts → src/mcp-shared-worker.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service-worker.d.ts","sourceRoot":"","sources":["../../../libs/mcp-worker/src/mcp-service-worker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service-worker.js","sources":["../../../libs/mcp-worker/src/mcp-service-worker.ts"],"sourcesContent":["/**\n * Service Worker MCP Server\n *\n * This service worker acts as an MCP (Model Context Protocol) server,\n * storing user events and exposing them via MCP protocol endpoints.\n */\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nimport { UserEvent } from './lib/database';\nimport { MCPController } from './lib/mcp-controller';\n\nconst BACKEND_WS_URL = 'ws://localhost:3001';\n\n// Broadcast to all clients\nconst controller = new MCPController(BACKEND_WS_URL, (message: unknown) => {\n self.clients.matchAll().then((clients) => {\n clients.forEach((client) => {\n try {\n client.postMessage(message);\n } catch (e) {\n // ignore\n console.error('[ServiceWorker] Failed to post message to client:', e);\n }\n });\n }).catch((err) => {\n console.error('[ServiceWorker] Failed to match clients for broadcast:', err);\n });\n});\n\n// Handle messages from the main thread\nself.addEventListener('message', async (event: ExtendableMessageEvent) => {\n if (!event.data) return;\n\n if (event.data.type === 'SET_AUTH_TOKEN') {\n controller.setAuthToken(event.data.token);\n return;\n }\n\n if (event.data.type === 'STORE_EVENT') {\n event.waitUntil((async () => {\n try {\n const userEvent = event.data.event as UserEvent;\n await controller.handleStoreEvent(userEvent);\n\n if (event.ports && event.ports[0]) {\n event.ports[0].postMessage({ success: true });\n }\n } catch (error) {\n if (event.ports && event.ports[0]) {\n event.ports[0].postMessage({ success: false, error: error instanceof Error ? error.message : 'Unknown error' });\n }\n }\n })());\n } else if (event.data.type === 'GET_EVENTS') {\n event.waitUntil((async () => {\n try {\n const events = await controller.handleGetEvents();\n if (event.ports && event.ports[0]) {\n event.ports[0].postMessage({ success: true, events });\n }\n } catch (error) {\n if (event.ports && event.ports[0]) {\n event.ports[0].postMessage({ success: false, error: error instanceof Error ? error.message : 'Unknown error' });\n }\n }\n })());\n } else if (event.data.type === 'GET_CONNECTION_STATUS') {\n if (event.ports && event.ports[0]) {\n event.ports[0].postMessage({ success: true, connected: controller.getConnectionStatus() });\n }\n }\n});\n\n// Install and activate\nself.addEventListener('install', (event: ExtendableEvent) => {\n event.waitUntil(self.skipWaiting());\n});\n\nself.addEventListener('activate', (event: ExtendableEvent) => {\n // Do not automatically start the WebSocket connection here.\n // If a client intends to use the service worker it will send messages\n // (e.g. SET_AUTH_TOKEN) and the controller will connect on demand.\n event.waitUntil(\n Promise.resolve(self.clients.claim())\n );\n});\n"],"names":["BACKEND_WS_URL","controller","MCPController","message","clients","client","e","err","event","userEvent","error","events"],"mappings":";AAYA,MAAMA,IAAiB,uBAGjBC,IAAa,IAAIC,EAAcF,GAAgB,CAACG,MAAqB;AACzE,OAAK,QAAQ,SAAA,EAAW,KAAK,CAACC,MAAY;AACxC,IAAAA,EAAQ,QAAQ,CAACC,MAAW;AAC1B,UAAI;AACF,QAAAA,EAAO,YAAYF,CAAO;AAAA,MAC5B,SAASG,GAAG;AAEV,gBAAQ,MAAM,qDAAqDA,CAAC;AAAA,MACtE;AAAA,IACF,CAAC;AAAA,EACH,CAAC,EAAE,MAAM,CAACC,MAAQ;AAChB,YAAQ,MAAM,0DAA0DA,CAAG;AAAA,EAC7E,CAAC;AACH,CAAC;AAGD,KAAK,iBAAiB,WAAW,OAAOC,MAAkC;AACxE,MAAKA,EAAM,MAEX;AAAA,QAAIA,EAAM,KAAK,SAAS,kBAAkB;AACxC,MAAAP,EAAW,aAAaO,EAAM,KAAK,KAAK;AACxC;AAAA,IACF;AAEA,IAAIA,EAAM,KAAK,SAAS,gBACtBA,EAAM,WAAW,YAAY;AAC3B,UAAI;AACF,cAAMC,IAAYD,EAAM,KAAK;AAC7B,cAAMP,EAAW,iBAAiBQ,CAAS,GAEvCD,EAAM,SAASA,EAAM,MAAM,CAAC,KAC9BA,EAAM,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,IAAM;AAAA,MAEhD,SAASE,GAAO;AACd,QAAIF,EAAM,SAASA,EAAM,MAAM,CAAC,KAC9BA,EAAM,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,IAAO,OAAOE,aAAiB,QAAQA,EAAM,UAAU,iBAAiB;AAAA,MAElH;AAAA,IACF,IAAI,IACKF,EAAM,KAAK,SAAS,eAC7BA,EAAM,WAAW,YAAY;AAC3B,UAAI;AACF,cAAMG,IAAS,MAAMV,EAAW,gBAAA;AAChC,QAAIO,EAAM,SAASA,EAAM,MAAM,CAAC,KAC9BA,EAAM,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,IAAM,QAAAG,GAAQ;AAAA,MAExD,SAASD,GAAO;AACd,QAAIF,EAAM,SAASA,EAAM,MAAM,CAAC,KAC9BA,EAAM,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,IAAO,OAAOE,aAAiB,QAAQA,EAAM,UAAU,iBAAiB;AAAA,MAElH;AAAA,IACF,IAAI,IACKF,EAAM,KAAK,SAAS,2BACzBA,EAAM,SAASA,EAAM,MAAM,CAAC,KAC9BA,EAAM,MAAM,CAAC,EAAE,YAAY,EAAE,SAAS,IAAM,WAAWP,EAAW,oBAAA,EAAoB,CAAG;AAAA;AAG/F,CAAC;AAGD,KAAK,iBAAiB,WAAW,CAACO,MAA2B;AAC3D,EAAAA,EAAM,UAAU,KAAK,aAAa;AACpC,CAAC;AAED,KAAK,iBAAiB,YAAY,CAACA,MAA2B;AAI5D,EAAAA,EAAM;AAAA,IACJ,QAAQ,QAAQ,KAAK,QAAQ,OAAO;AAAA,EAAA;AAExC,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-shared-worker.d.ts","sourceRoot":"","sources":["../../../libs/mcp-worker/src/mcp-shared-worker.ts"],"names":[],"mappings":"AACA;;;;;;GAMG"}
|
package/mcp-shared-worker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-shared-worker.js","sources":["../../../libs/mcp-worker/src/mcp-shared-worker.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\n/**\n * SharedWorker MCP Server\n *\n * This SharedWorker acts as an MCP (Model Context Protocol) server,\n * storing user events and exposing them via MCP protocol endpoints.\n * Falls back to ServiceWorker if SharedWorker is not supported.\n */\n\ndeclare const self: SharedWorkerGlobalScope;\n\nimport { UserEvent } from './lib/database';\nimport { MCPController } from './lib/mcp-controller';\n\nconst BACKEND_WS_URL = 'ws://localhost:3001';\n\n// Track all connected ports\nconst connectedPorts: MessagePort[] = [];\n\n// Create controller with a broadcast function that posts to all connected ports\nconst controller = new MCPController(BACKEND_WS_URL, (message: unknown) => {\n connectedPorts.forEach((port) => {\n try {\n port.postMessage(message);\n } catch (error) {\n const idx = connectedPorts.indexOf(port);\n if (idx > -1) connectedPorts.splice(idx, 1);\n }\n });\n});\n\n// Handle new connections\nself.onconnect = (event: MessageEvent) => {\n const port = event.ports[0];\n connectedPorts.push(port);\n\n // Send initial connection status\n try {\n port.postMessage({ type: 'CONNECTION_STATUS', connected: controller.getConnectionStatus() });\n } catch (err) {\n console.error('[SharedWorker] Failed to post initial status to port:', err);\n }\n\n port.onmessage = async (ev: MessageEvent) => {\n if (!ev.data) return;\n const messageData = ev.data;\n\n if (messageData.type === 'SET_AUTH_TOKEN') {\n const newToken = (messageData as any).token as string | null;\n controller.setAuthToken(newToken);\n return;\n }\n\n if (messageData.type === 'STORE_EVENT') {\n try {\n const userEvent = messageData.event as UserEvent;\n await controller.handleStoreEvent(userEvent);\n try {\n port.postMessage({ success: true });\n } catch (error) {\n console.error('[SharedWorker] Failed to post success to port:', error);\n }\n } catch (error) {\n try {\n port.postMessage({ success: false, error: error instanceof Error ? error.message : 'Unknown error' });\n } catch (e) {\n console.error('[SharedWorker] Failed to post failure to port:', e);\n }\n }\n\n return;\n }\n\n if (messageData.type === 'GET_EVENTS') {\n try {\n const events = await controller.handleGetEvents();\n try {\n port.postMessage({ success: true, events });\n } catch (error) {\n console.error('[SharedWorker] Failed to post events to port:', error);\n }\n } catch (error) {\n try {\n port.postMessage({ success: false, error: error instanceof Error ? error.message : 'Unknown error' });\n } catch (e) {\n console.error('[SharedWorker] Failed to post failure to port:', e);\n }\n }\n return;\n }\n\n if (messageData.type === 'GET_CONNECTION_STATUS') {\n try {\n port.postMessage({ success: true, connected: controller.getConnectionStatus() });\n } catch (error) {\n console.error('[SharedWorker] Failed to post connection status to port:', error);\n }\n return;\n }\n };\n\n // Handle port disconnection\n port.onmessageerror = () => {\n const index = connectedPorts.indexOf(port);\n if (index > -1) {\n connectedPorts.splice(index, 1);\n }\n };\n};\n"],"names":["BACKEND_WS_URL","connectedPorts","controller","MCPController","message","port","idx","event","err","ev","messageData","newToken","userEvent","error","e","events","index"],"mappings":";AAcA,MAAMA,IAAiB,uBAGjBC,IAAgC,CAAA,GAGhCC,IAAa,IAAIC,EAAcH,GAAgB,CAACI,MAAqB;AACzE,EAAAH,EAAe,QAAQ,CAACI,MAAS;AAC/B,QAAI;AACF,MAAAA,EAAK,YAAYD,CAAO;AAAA,IAC1B,QAAgB;AACd,YAAME,IAAML,EAAe,QAAQI,CAAI;AACvC,MAAIC,IAAM,MAAIL,EAAe,OAAOK,GAAK,CAAC;AAAA,IAC5C;AAAA,EACF,CAAC;AACH,CAAC;AAGD,KAAK,YAAY,CAACC,MAAwB;AACxC,QAAMF,IAAOE,EAAM,MAAM,CAAC;AAC1B,EAAAN,EAAe,KAAKI,CAAI;AAGxB,MAAI;AACF,IAAAA,EAAK,YAAY,EAAE,MAAM,qBAAqB,WAAWH,EAAW,oBAAA,GAAuB;AAAA,EAC7F,SAASM,GAAK;AACZ,YAAQ,MAAM,yDAAyDA,CAAG;AAAA,EAC5E;AAEA,EAAAH,EAAK,YAAY,OAAOI,MAAqB;AAC3C,QAAI,CAACA,EAAG,KAAM;AACd,UAAMC,IAAcD,EAAG;AAEvB,QAAIC,EAAY,SAAS,kBAAkB;AACzC,YAAMC,IAAYD,EAAoB;AACtC,MAAAR,EAAW,aAAaS,CAAQ;AAChC;AAAA,IACF;AAEA,QAAID,EAAY,SAAS,eAAe;AACtC,UAAI;AACF,cAAME,IAAYF,EAAY;AAC9B,cAAMR,EAAW,iBAAiBU,CAAS;AAC3C,YAAI;AACF,UAAAP,EAAK,YAAY,EAAE,SAAS,GAAA,CAAM;AAAA,QACpC,SAASQ,GAAO;AACd,kBAAQ,MAAM,kDAAkDA,CAAK;AAAA,QACvE;AAAA,MACF,SAASA,GAAO;AACd,YAAI;AACF,UAAAR,EAAK,YAAY,EAAE,SAAS,IAAO,OAAOQ,aAAiB,QAAQA,EAAM,UAAU,gBAAA,CAAiB;AAAA,QACtG,SAASC,GAAG;AACV,kBAAQ,MAAM,kDAAkDA,CAAC;AAAA,QACnE;AAAA,MACF;AAEA;AAAA,IACF;AAEA,QAAIJ,EAAY,SAAS,cAAc;AACrC,UAAI;AACF,cAAMK,IAAS,MAAMb,EAAW,gBAAA;AAChC,YAAI;AACF,UAAAG,EAAK,YAAY,EAAE,SAAS,IAAM,QAAAU,GAAQ;AAAA,QAC5C,SAASF,GAAO;AACd,kBAAQ,MAAM,iDAAiDA,CAAK;AAAA,QACtE;AAAA,MACF,SAASA,GAAO;AACd,YAAI;AACF,UAAAR,EAAK,YAAY,EAAE,SAAS,IAAO,OAAOQ,aAAiB,QAAQA,EAAM,UAAU,gBAAA,CAAiB;AAAA,QACtG,SAASC,GAAG;AACV,kBAAQ,MAAM,kDAAkDA,CAAC;AAAA,QACnE;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAIJ,EAAY,SAAS,yBAAyB;AAChD,UAAI;AACF,QAAAL,EAAK,YAAY,EAAE,SAAS,IAAM,WAAWH,EAAW,oBAAA,GAAuB;AAAA,MACjF,SAASW,GAAO;AACd,gBAAQ,MAAM,4DAA4DA,CAAK;AAAA,MACjF;AACA;AAAA,IACF;AAAA,EACF,GAGAR,EAAK,iBAAiB,MAAM;AAC1B,UAAMW,IAAQf,EAAe,QAAQI,CAAI;AACzC,IAAIW,IAAQ,MACVf,EAAe,OAAOe,GAAO,CAAC;AAAA,EAElC;AACF;"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|