@opentabs-dev/mcp-server 0.0.19

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 (309) hide show
  1. package/dist/audit-disk.d.ts +23 -0
  2. package/dist/audit-disk.d.ts.map +1 -0
  3. package/dist/audit-disk.js +74 -0
  4. package/dist/audit-disk.js.map +1 -0
  5. package/dist/browser-tools/analyze-site/detect-apis.d.ts +36 -0
  6. package/dist/browser-tools/analyze-site/detect-apis.d.ts.map +1 -0
  7. package/dist/browser-tools/analyze-site/detect-apis.js +383 -0
  8. package/dist/browser-tools/analyze-site/detect-apis.js.map +1 -0
  9. package/dist/browser-tools/analyze-site/detect-auth.d.ts +72 -0
  10. package/dist/browser-tools/analyze-site/detect-auth.d.ts.map +1 -0
  11. package/dist/browser-tools/analyze-site/detect-auth.js +384 -0
  12. package/dist/browser-tools/analyze-site/detect-auth.js.map +1 -0
  13. package/dist/browser-tools/analyze-site/detect-dom.d.ts +65 -0
  14. package/dist/browser-tools/analyze-site/detect-dom.d.ts.map +1 -0
  15. package/dist/browser-tools/analyze-site/detect-dom.js +45 -0
  16. package/dist/browser-tools/analyze-site/detect-dom.js.map +1 -0
  17. package/dist/browser-tools/analyze-site/detect-framework.d.ts +48 -0
  18. package/dist/browser-tools/analyze-site/detect-framework.d.ts.map +1 -0
  19. package/dist/browser-tools/analyze-site/detect-framework.js +31 -0
  20. package/dist/browser-tools/analyze-site/detect-framework.js.map +1 -0
  21. package/dist/browser-tools/analyze-site/detect-globals.d.ts +41 -0
  22. package/dist/browser-tools/analyze-site/detect-globals.d.ts.map +1 -0
  23. package/dist/browser-tools/analyze-site/detect-globals.js +42 -0
  24. package/dist/browser-tools/analyze-site/detect-globals.js.map +1 -0
  25. package/dist/browser-tools/analyze-site/detect-storage.d.ts +39 -0
  26. package/dist/browser-tools/analyze-site/detect-storage.d.ts.map +1 -0
  27. package/dist/browser-tools/analyze-site/detect-storage.js +34 -0
  28. package/dist/browser-tools/analyze-site/detect-storage.js.map +1 -0
  29. package/dist/browser-tools/analyze-site/index.d.ts +52 -0
  30. package/dist/browser-tools/analyze-site/index.d.ts.map +1 -0
  31. package/dist/browser-tools/analyze-site/index.js +827 -0
  32. package/dist/browser-tools/analyze-site/index.js.map +1 -0
  33. package/dist/browser-tools/analyze-site.d.ts +17 -0
  34. package/dist/browser-tools/analyze-site.d.ts.map +1 -0
  35. package/dist/browser-tools/analyze-site.js +41 -0
  36. package/dist/browser-tools/analyze-site.js.map +1 -0
  37. package/dist/browser-tools/clear-console-logs.d.ts +9 -0
  38. package/dist/browser-tools/clear-console-logs.d.ts.map +1 -0
  39. package/dist/browser-tools/clear-console-logs.js +16 -0
  40. package/dist/browser-tools/clear-console-logs.js.map +1 -0
  41. package/dist/browser-tools/click-element.d.ts +10 -0
  42. package/dist/browser-tools/click-element.d.ts.map +1 -0
  43. package/dist/browser-tools/click-element.js +22 -0
  44. package/dist/browser-tools/click-element.js.map +1 -0
  45. package/dist/browser-tools/close-tab.d.ts +9 -0
  46. package/dist/browser-tools/close-tab.d.ts.map +1 -0
  47. package/dist/browser-tools/close-tab.js +16 -0
  48. package/dist/browser-tools/close-tab.js.map +1 -0
  49. package/dist/browser-tools/definition.d.ts +26 -0
  50. package/dist/browser-tools/definition.d.ts.map +1 -0
  51. package/dist/browser-tools/definition.js +16 -0
  52. package/dist/browser-tools/definition.js.map +1 -0
  53. package/dist/browser-tools/delete-cookies.d.ts +10 -0
  54. package/dist/browser-tools/delete-cookies.d.ts.map +1 -0
  55. package/dist/browser-tools/delete-cookies.js +19 -0
  56. package/dist/browser-tools/delete-cookies.js.map +1 -0
  57. package/dist/browser-tools/disable-network-capture.d.ts +9 -0
  58. package/dist/browser-tools/disable-network-capture.d.ts.map +1 -0
  59. package/dist/browser-tools/disable-network-capture.js +16 -0
  60. package/dist/browser-tools/disable-network-capture.js.map +1 -0
  61. package/dist/browser-tools/enable-network-capture.d.ts +12 -0
  62. package/dist/browser-tools/enable-network-capture.d.ts.map +1 -0
  63. package/dist/browser-tools/enable-network-capture.js +42 -0
  64. package/dist/browser-tools/enable-network-capture.js.map +1 -0
  65. package/dist/browser-tools/execute-script.d.ts +19 -0
  66. package/dist/browser-tools/execute-script.d.ts.map +1 -0
  67. package/dist/browser-tools/execute-script.js +51 -0
  68. package/dist/browser-tools/execute-script.js.map +1 -0
  69. package/dist/browser-tools/extension-check-adapter.d.ts +11 -0
  70. package/dist/browser-tools/extension-check-adapter.d.ts.map +1 -0
  71. package/dist/browser-tools/extension-check-adapter.js +22 -0
  72. package/dist/browser-tools/extension-check-adapter.js.map +1 -0
  73. package/dist/browser-tools/extension-force-reconnect.d.ts +9 -0
  74. package/dist/browser-tools/extension-force-reconnect.d.ts.map +1 -0
  75. package/dist/browser-tools/extension-force-reconnect.js +19 -0
  76. package/dist/browser-tools/extension-force-reconnect.js.map +1 -0
  77. package/dist/browser-tools/extension-get-logs.d.ts +24 -0
  78. package/dist/browser-tools/extension-get-logs.d.ts.map +1 -0
  79. package/dist/browser-tools/extension-get-logs.js +34 -0
  80. package/dist/browser-tools/extension-get-logs.js.map +1 -0
  81. package/dist/browser-tools/extension-get-side-panel.d.ts +8 -0
  82. package/dist/browser-tools/extension-get-side-panel.d.ts.map +1 -0
  83. package/dist/browser-tools/extension-get-side-panel.js +17 -0
  84. package/dist/browser-tools/extension-get-side-panel.js.map +1 -0
  85. package/dist/browser-tools/extension-get-state.d.ts +9 -0
  86. package/dist/browser-tools/extension-get-state.d.ts.map +1 -0
  87. package/dist/browser-tools/extension-get-state.js +19 -0
  88. package/dist/browser-tools/extension-get-state.js.map +1 -0
  89. package/dist/browser-tools/focus-tab.d.ts +9 -0
  90. package/dist/browser-tools/focus-tab.d.ts.map +1 -0
  91. package/dist/browser-tools/focus-tab.js +17 -0
  92. package/dist/browser-tools/focus-tab.js.map +1 -0
  93. package/dist/browser-tools/get-console-logs.d.ts +18 -0
  94. package/dist/browser-tools/get-console-logs.d.ts.map +1 -0
  95. package/dist/browser-tools/get-console-logs.js +30 -0
  96. package/dist/browser-tools/get-console-logs.js.map +1 -0
  97. package/dist/browser-tools/get-cookies.d.ts +10 -0
  98. package/dist/browser-tools/get-cookies.d.ts.map +1 -0
  99. package/dist/browser-tools/get-cookies.js +23 -0
  100. package/dist/browser-tools/get-cookies.js.map +1 -0
  101. package/dist/browser-tools/get-network-requests.d.ts +10 -0
  102. package/dist/browser-tools/get-network-requests.d.ts.map +1 -0
  103. package/dist/browser-tools/get-network-requests.js +27 -0
  104. package/dist/browser-tools/get-network-requests.js.map +1 -0
  105. package/dist/browser-tools/get-page-html.d.ts +11 -0
  106. package/dist/browser-tools/get-page-html.d.ts.map +1 -0
  107. package/dist/browser-tools/get-page-html.js +32 -0
  108. package/dist/browser-tools/get-page-html.js.map +1 -0
  109. package/dist/browser-tools/get-resource-content.d.ts +11 -0
  110. package/dist/browser-tools/get-resource-content.d.ts.map +1 -0
  111. package/dist/browser-tools/get-resource-content.js +31 -0
  112. package/dist/browser-tools/get-resource-content.js.map +1 -0
  113. package/dist/browser-tools/get-storage.d.ts +14 -0
  114. package/dist/browser-tools/get-storage.d.ts.map +1 -0
  115. package/dist/browser-tools/get-storage.js +28 -0
  116. package/dist/browser-tools/get-storage.js.map +1 -0
  117. package/dist/browser-tools/get-tab-content.d.ts +11 -0
  118. package/dist/browser-tools/get-tab-content.d.ts.map +1 -0
  119. package/dist/browser-tools/get-tab-content.js +29 -0
  120. package/dist/browser-tools/get-tab-content.js.map +1 -0
  121. package/dist/browser-tools/get-tab-info.d.ts +9 -0
  122. package/dist/browser-tools/get-tab-info.d.ts.map +1 -0
  123. package/dist/browser-tools/get-tab-info.js +17 -0
  124. package/dist/browser-tools/get-tab-info.js.map +1 -0
  125. package/dist/browser-tools/handle-dialog.d.ts +14 -0
  126. package/dist/browser-tools/handle-dialog.d.ts.map +1 -0
  127. package/dist/browser-tools/handle-dialog.js +30 -0
  128. package/dist/browser-tools/handle-dialog.js.map +1 -0
  129. package/dist/browser-tools/hover-element.d.ts +11 -0
  130. package/dist/browser-tools/hover-element.d.ts.map +1 -0
  131. package/dist/browser-tools/hover-element.js +24 -0
  132. package/dist/browser-tools/hover-element.js.map +1 -0
  133. package/dist/browser-tools/index.d.ts +7 -0
  134. package/dist/browser-tools/index.d.ts.map +1 -0
  135. package/dist/browser-tools/index.js +81 -0
  136. package/dist/browser-tools/index.js.map +1 -0
  137. package/dist/browser-tools/list-resources.d.ts +10 -0
  138. package/dist/browser-tools/list-resources.d.ts.map +1 -0
  139. package/dist/browser-tools/list-resources.js +29 -0
  140. package/dist/browser-tools/list-resources.js.map +1 -0
  141. package/dist/browser-tools/list-tabs.d.ts +7 -0
  142. package/dist/browser-tools/list-tabs.d.ts.map +1 -0
  143. package/dist/browser-tools/list-tabs.js +16 -0
  144. package/dist/browser-tools/list-tabs.js.map +1 -0
  145. package/dist/browser-tools/navigate-tab.d.ts +10 -0
  146. package/dist/browser-tools/navigate-tab.d.ts.map +1 -0
  147. package/dist/browser-tools/navigate-tab.js +18 -0
  148. package/dist/browser-tools/navigate-tab.js.map +1 -0
  149. package/dist/browser-tools/open-tab.d.ts +9 -0
  150. package/dist/browser-tools/open-tab.d.ts.map +1 -0
  151. package/dist/browser-tools/open-tab.js +18 -0
  152. package/dist/browser-tools/open-tab.js.map +1 -0
  153. package/dist/browser-tools/press-key.d.ts +17 -0
  154. package/dist/browser-tools/press-key.d.ts.map +1 -0
  155. package/dist/browser-tools/press-key.js +43 -0
  156. package/dist/browser-tools/press-key.js.map +1 -0
  157. package/dist/browser-tools/query-elements.d.ts +12 -0
  158. package/dist/browser-tools/query-elements.d.ts.map +1 -0
  159. package/dist/browser-tools/query-elements.js +30 -0
  160. package/dist/browser-tools/query-elements.js.map +1 -0
  161. package/dist/browser-tools/reload-extension.d.ts +13 -0
  162. package/dist/browser-tools/reload-extension.d.ts.map +1 -0
  163. package/dist/browser-tools/reload-extension.js +35 -0
  164. package/dist/browser-tools/reload-extension.js.map +1 -0
  165. package/dist/browser-tools/screenshot-tab.d.ts +9 -0
  166. package/dist/browser-tools/screenshot-tab.d.ts.map +1 -0
  167. package/dist/browser-tools/screenshot-tab.js +22 -0
  168. package/dist/browser-tools/screenshot-tab.js.map +1 -0
  169. package/dist/browser-tools/scroll.d.ts +23 -0
  170. package/dist/browser-tools/scroll.d.ts.map +1 -0
  171. package/dist/browser-tools/scroll.js +56 -0
  172. package/dist/browser-tools/scroll.js.map +1 -0
  173. package/dist/browser-tools/select-option.d.ts +12 -0
  174. package/dist/browser-tools/select-option.d.ts.map +1 -0
  175. package/dist/browser-tools/select-option.js +25 -0
  176. package/dist/browser-tools/select-option.js.map +1 -0
  177. package/dist/browser-tools/set-cookie.d.ts +16 -0
  178. package/dist/browser-tools/set-cookie.d.ts.map +1 -0
  179. package/dist/browser-tools/set-cookie.js +42 -0
  180. package/dist/browser-tools/set-cookie.js.map +1 -0
  181. package/dist/browser-tools/type-text.d.ts +12 -0
  182. package/dist/browser-tools/type-text.d.ts.map +1 -0
  183. package/dist/browser-tools/type-text.js +25 -0
  184. package/dist/browser-tools/type-text.js.map +1 -0
  185. package/dist/browser-tools/url-validation.d.ts +13 -0
  186. package/dist/browser-tools/url-validation.d.ts.map +1 -0
  187. package/dist/browser-tools/url-validation.js +23 -0
  188. package/dist/browser-tools/url-validation.js.map +1 -0
  189. package/dist/browser-tools/wait-for-element.d.ts +12 -0
  190. package/dist/browser-tools/wait-for-element.d.ts.map +1 -0
  191. package/dist/browser-tools/wait-for-element.js +29 -0
  192. package/dist/browser-tools/wait-for-element.js.map +1 -0
  193. package/dist/config.d.ts +99 -0
  194. package/dist/config.d.ts.map +1 -0
  195. package/dist/config.js +344 -0
  196. package/dist/config.js.map +1 -0
  197. package/dist/dev-mode.d.ts +14 -0
  198. package/dist/dev-mode.d.ts.map +1 -0
  199. package/dist/dev-mode.js +15 -0
  200. package/dist/dev-mode.js.map +1 -0
  201. package/dist/discovery-legacy.d.ts +32 -0
  202. package/dist/discovery-legacy.d.ts.map +1 -0
  203. package/dist/discovery-legacy.js +415 -0
  204. package/dist/discovery-legacy.js.map +1 -0
  205. package/dist/discovery.d.ts +28 -0
  206. package/dist/discovery.d.ts.map +1 -0
  207. package/dist/discovery.js +97 -0
  208. package/dist/discovery.js.map +1 -0
  209. package/dist/extension-install.d.ts +27 -0
  210. package/dist/extension-install.d.ts.map +1 -0
  211. package/dist/extension-install.js +75 -0
  212. package/dist/extension-install.js.map +1 -0
  213. package/dist/extension-protocol.d.ts +130 -0
  214. package/dist/extension-protocol.d.ts.map +1 -0
  215. package/dist/extension-protocol.js +869 -0
  216. package/dist/extension-protocol.js.map +1 -0
  217. package/dist/file-watcher.d.ts +75 -0
  218. package/dist/file-watcher.d.ts.map +1 -0
  219. package/dist/file-watcher.js +616 -0
  220. package/dist/file-watcher.js.map +1 -0
  221. package/dist/http-routes.d.ts +88 -0
  222. package/dist/http-routes.d.ts.map +1 -0
  223. package/dist/http-routes.js +545 -0
  224. package/dist/http-routes.js.map +1 -0
  225. package/dist/index.d.ts +45 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +187 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/loader.d.ts +100 -0
  230. package/dist/loader.d.ts.map +1 -0
  231. package/dist/loader.js +402 -0
  232. package/dist/loader.js.map +1 -0
  233. package/dist/log-buffer.d.ts +33 -0
  234. package/dist/log-buffer.d.ts.map +1 -0
  235. package/dist/log-buffer.js +64 -0
  236. package/dist/log-buffer.js.map +1 -0
  237. package/dist/logger.d.ts +34 -0
  238. package/dist/logger.d.ts.map +1 -0
  239. package/dist/logger.js +81 -0
  240. package/dist/logger.js.map +1 -0
  241. package/dist/manifest-schema.d.ts +14 -0
  242. package/dist/manifest-schema.d.ts.map +1 -0
  243. package/dist/manifest-schema.js +51 -0
  244. package/dist/manifest-schema.js.map +1 -0
  245. package/dist/mcp-setup.d.ts +131 -0
  246. package/dist/mcp-setup.d.ts.map +1 -0
  247. package/dist/mcp-setup.js +673 -0
  248. package/dist/mcp-setup.js.map +1 -0
  249. package/dist/permissions.d.ts +59 -0
  250. package/dist/permissions.d.ts.map +1 -0
  251. package/dist/permissions.js +141 -0
  252. package/dist/permissions.js.map +1 -0
  253. package/dist/registry.d.ts +78 -0
  254. package/dist/registry.d.ts.map +1 -0
  255. package/dist/registry.js +187 -0
  256. package/dist/registry.js.map +1 -0
  257. package/dist/reload.d.ts +52 -0
  258. package/dist/reload.d.ts.map +1 -0
  259. package/dist/reload.js +326 -0
  260. package/dist/reload.js.map +1 -0
  261. package/dist/resolver.d.ts +53 -0
  262. package/dist/resolver.d.ts.map +1 -0
  263. package/dist/resolver.js +272 -0
  264. package/dist/resolver.js.map +1 -0
  265. package/dist/sanitize-error.d.ts +8 -0
  266. package/dist/sanitize-error.d.ts.map +1 -0
  267. package/dist/sanitize-error.js +25 -0
  268. package/dist/sanitize-error.js.map +1 -0
  269. package/dist/sanitize-tool-output.d.ts +20 -0
  270. package/dist/sanitize-tool-output.d.ts.map +1 -0
  271. package/dist/sanitize-tool-output.js +52 -0
  272. package/dist/sanitize-tool-output.js.map +1 -0
  273. package/dist/sdk-version.d.ts +11 -0
  274. package/dist/sdk-version.d.ts.map +1 -0
  275. package/dist/sdk-version.js +23 -0
  276. package/dist/sdk-version.js.map +1 -0
  277. package/dist/shutdown.d.ts +28 -0
  278. package/dist/shutdown.d.ts.map +1 -0
  279. package/dist/shutdown.js +68 -0
  280. package/dist/shutdown.js.map +1 -0
  281. package/dist/skip-confirmation.d.ts +15 -0
  282. package/dist/skip-confirmation.d.ts.map +1 -0
  283. package/dist/skip-confirmation.js +16 -0
  284. package/dist/skip-confirmation.js.map +1 -0
  285. package/dist/skip-sanitization.d.ts +17 -0
  286. package/dist/skip-sanitization.d.ts.map +1 -0
  287. package/dist/skip-sanitization.js +18 -0
  288. package/dist/skip-sanitization.js.map +1 -0
  289. package/dist/skip-verification.d.ts +11 -0
  290. package/dist/skip-verification.d.ts.map +1 -0
  291. package/dist/skip-verification.js +12 -0
  292. package/dist/skip-verification.js.map +1 -0
  293. package/dist/state.d.ts +290 -0
  294. package/dist/state.d.ts.map +1 -0
  295. package/dist/state.js +111 -0
  296. package/dist/state.js.map +1 -0
  297. package/dist/verify-plugin.d.ts +53 -0
  298. package/dist/verify-plugin.d.ts.map +1 -0
  299. package/dist/verify-plugin.js +123 -0
  300. package/dist/verify-plugin.js.map +1 -0
  301. package/dist/version-check.d.ts +35 -0
  302. package/dist/version-check.d.ts.map +1 -0
  303. package/dist/version-check.js +111 -0
  304. package/dist/version-check.js.map +1 -0
  305. package/dist/version.d.ts +10 -0
  306. package/dist/version.d.ts.map +1 -0
  307. package/dist/version.js +22 -0
  308. package/dist/version.js.map +1 -0
  309. package/package.json +28 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-routes.js","sourceRoot":"","sources":["../src/http-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * OpenTabs MCP Server — Entry point and frozen shell.
3
+ *
4
+ * HTTP server with six endpoints:
5
+ * 1. Streamable HTTP at /mcp — for MCP clients (Claude Code, etc.)
6
+ * 2. WebSocket at /ws — for Chrome extension connection
7
+ * 3. GET /ws-info — authenticated WebSocket URL for extension
8
+ * 4. GET /health — health check endpoint (includes mode: 'dev' | 'production')
9
+ * 5. POST /reload — trigger config/plugin rediscovery
10
+ * 6. POST /extension/reload — trigger extension reload
11
+ *
12
+ * Hot reload (bun --hot):
13
+ * Bun 1.x re-evaluates this module on file change but preserves globalThis.
14
+ * The Bun.serve() instance is created ONCE on first load with pure delegate
15
+ * handlers — fetch, websocket.open, websocket.message, websocket.close all
16
+ * read the latest handler functions from getHotState() at call time. This
17
+ * means ALL handler logic is hot-reloadable: extension protocol, MCP tool
18
+ * handlers, browser tools, plugin discovery, config — everything except the
19
+ * Bun.serve() shell itself.
20
+ *
21
+ * On hot reload, performReload() in reload.ts handles the full sequence:
22
+ * 1. Config is re-loaded from disk
23
+ * 2. Plugins are re-discovered into a new Map, then swapped atomically
24
+ * 3. Browser tools are refreshed from the new module import
25
+ * 4. MCP handler logic is re-registered on ALL existing sessions
26
+ * 5. File watchers are restarted with fresh callbacks
27
+ * 6. Extension gets a sync.full with the latest plugin state
28
+ * 7. All MCP clients receive tools/list_changed notification
29
+ * 8. Stale tabMapping and outdatedPlugins entries are pruned
30
+ *
31
+ * ┌──────────────────────────────────────────────────────────────────────┐
32
+ * │ FROZEN CORE — changes here require a full process restart. │
33
+ * │ │
34
+ * │ The following are created ONCE on first load and reused across all │
35
+ * │ hot reloads. Editing them has NO effect until the process restarts: │
36
+ * │ - HotState interface / getHotState / setHotState │
37
+ * │ - createHttpServer (Bun.serve() delegate shell) │
38
+ * │ - PORT selection logic │
39
+ * │ │
40
+ * │ Everything else (handlers, reload orchestration, protocol, tools) │
41
+ * │ is re-evaluated on each hot reload and takes effect immediately. │
42
+ * └──────────────────────────────────────────────────────────────────────┘
43
+ */
44
+ export {};
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG"}
package/dist/index.js ADDED
@@ -0,0 +1,187 @@
1
+ /**
2
+ * OpenTabs MCP Server — Entry point and frozen shell.
3
+ *
4
+ * HTTP server with six endpoints:
5
+ * 1. Streamable HTTP at /mcp — for MCP clients (Claude Code, etc.)
6
+ * 2. WebSocket at /ws — for Chrome extension connection
7
+ * 3. GET /ws-info — authenticated WebSocket URL for extension
8
+ * 4. GET /health — health check endpoint (includes mode: 'dev' | 'production')
9
+ * 5. POST /reload — trigger config/plugin rediscovery
10
+ * 6. POST /extension/reload — trigger extension reload
11
+ *
12
+ * Hot reload (bun --hot):
13
+ * Bun 1.x re-evaluates this module on file change but preserves globalThis.
14
+ * The Bun.serve() instance is created ONCE on first load with pure delegate
15
+ * handlers — fetch, websocket.open, websocket.message, websocket.close all
16
+ * read the latest handler functions from getHotState() at call time. This
17
+ * means ALL handler logic is hot-reloadable: extension protocol, MCP tool
18
+ * handlers, browser tools, plugin discovery, config — everything except the
19
+ * Bun.serve() shell itself.
20
+ *
21
+ * On hot reload, performReload() in reload.ts handles the full sequence:
22
+ * 1. Config is re-loaded from disk
23
+ * 2. Plugins are re-discovered into a new Map, then swapped atomically
24
+ * 3. Browser tools are refreshed from the new module import
25
+ * 4. MCP handler logic is re-registered on ALL existing sessions
26
+ * 5. File watchers are restarted with fresh callbacks
27
+ * 6. Extension gets a sync.full with the latest plugin state
28
+ * 7. All MCP clients receive tools/list_changed notification
29
+ * 8. Stale tabMapping and outdatedPlugins entries are pruned
30
+ *
31
+ * ┌──────────────────────────────────────────────────────────────────────┐
32
+ * │ FROZEN CORE — changes here require a full process restart. │
33
+ * │ │
34
+ * │ The following are created ONCE on first load and reused across all │
35
+ * │ hot reloads. Editing them has NO effect until the process restarts: │
36
+ * │ - HotState interface / getHotState / setHotState │
37
+ * │ - createHttpServer (Bun.serve() delegate shell) │
38
+ * │ - PORT selection logic │
39
+ * │ │
40
+ * │ Everything else (handlers, reload orchestration, protocol, tools) │
41
+ * │ is re-evaluated on each hot reload and takes effect immediately. │
42
+ * └──────────────────────────────────────────────────────────────────────┘
43
+ */
44
+ import { writeAuthFile } from './config.js';
45
+ import { isDev } from './dev-mode.js';
46
+ import { createHandlers } from './http-routes.js';
47
+ import { log } from './logger.js';
48
+ import { performReload } from './reload.js';
49
+ import { installShutdownHandlers } from './shutdown.js';
50
+ import { createState } from './state.js';
51
+ import { version } from './version.js';
52
+ const HOT_KEY = '__opentabs_hot_state__';
53
+ const getHotState = () => globalThis[HOT_KEY];
54
+ const setHotState = (hs) => {
55
+ globalThis[HOT_KEY] = hs;
56
+ };
57
+ // ---------------------------------------------------------------------------
58
+ // Determine if this is a hot reload or first load
59
+ // ---------------------------------------------------------------------------
60
+ const hotState = getHotState();
61
+ const isHotReload = hotState?.initialized === true;
62
+ const reloadCount = isHotReload ? hotState.reloadCount + 1 : 0;
63
+ // ---------------------------------------------------------------------------
64
+ // Shared mutable state — the SAME object references across all reloads
65
+ // ---------------------------------------------------------------------------
66
+ const state = hotState?.state ?? createState();
67
+ // Patch missing fields from defaults so that newly added ServerState fields
68
+ // are present on the persisted state object after hot reload during development.
69
+ // Only patches top-level keys — structural type changes to existing fields
70
+ // require a process restart (detected by schema version mismatch below).
71
+ if (isHotReload) {
72
+ const defaults = createState();
73
+ // Detect structural schema changes that cannot be patched
74
+ if (state._schemaVersion !== defaults._schemaVersion) {
75
+ log.warn(`State schema version changed (${state._schemaVersion} → ${defaults._schemaVersion}). Restart the MCP server process for this change to take full effect.`);
76
+ state._schemaVersion = defaults._schemaVersion;
77
+ }
78
+ for (const [key, value] of Object.entries(defaults)) {
79
+ if (!(key in state)) {
80
+ state[key] = value;
81
+ }
82
+ }
83
+ }
84
+ const transports = hotState?.transports ?? new Map();
85
+ const sessionServers = hotState?.sessionServers ?? [];
86
+ // ---------------------------------------------------------------------------
87
+ // Reload orchestration — delegates to reload.ts
88
+ // ---------------------------------------------------------------------------
89
+ const reloadResult = await performReload(state, sessionServers, transports, isHotReload);
90
+ // ---------------------------------------------------------------------------
91
+ // Handler functions — created fresh on every module evaluation
92
+ //
93
+ // These close over the current module's imports AND the shared mutable
94
+ // state objects (state, transports, sessionServers). After hot reload,
95
+ // fresh handlers are stored on HotState, and the Bun.serve() delegate
96
+ // shell reads them via getHotState() at call time.
97
+ // ---------------------------------------------------------------------------
98
+ const handlers = createHandlers({
99
+ state,
100
+ transports,
101
+ sessionServers,
102
+ getHotState,
103
+ });
104
+ // =========================================================================
105
+ // FROZEN CORE — HTTP + WebSocket server (created ONCE, reused across reloads)
106
+ //
107
+ // The Bun.serve() instance is a pure delegate shell. Its fetch and websocket
108
+ // handlers read the latest handler functions from getHotState() at call time.
109
+ // This makes ALL handler logic hot-reloadable without recreating the server.
110
+ //
111
+ // Editing createHttpServer or the PORT logic requires a full process restart.
112
+ // =========================================================================
113
+ const PORT = hotState?.actualPort ?? (Bun.env.PORT !== undefined ? Number(Bun.env.PORT) : 9515);
114
+ /** Create a Bun HTTP + WebSocket server (only on first load) */
115
+ const createHttpServer = () => {
116
+ try {
117
+ return Bun.serve({
118
+ hostname: '127.0.0.1',
119
+ port: PORT,
120
+ async fetch(req, server) {
121
+ const hs = getHotState();
122
+ if (!hs)
123
+ return new Response('Server initializing', { status: 503 });
124
+ return hs.handlers.fetch(req, server);
125
+ },
126
+ websocket: {
127
+ /** Matches MAX_MESSAGE_SIZE in extension-protocol.ts (10MB) */
128
+ maxPayloadLength: 10 * 1024 * 1024,
129
+ open(ws) {
130
+ getHotState()?.handlers.wsOpen(ws);
131
+ },
132
+ message(ws, message) {
133
+ getHotState()?.handlers.wsMessage(ws, message);
134
+ },
135
+ close(ws) {
136
+ getHotState()?.handlers.wsClose(ws);
137
+ },
138
+ },
139
+ });
140
+ }
141
+ catch (error) {
142
+ const isAddrInUse = error instanceof Error && 'code' in error && error.code === 'EADDRINUSE';
143
+ if (isAddrInUse) {
144
+ log.error(`Port ${PORT} is already in use. Kill the existing process or use a different port:`);
145
+ log.error(` lsof -ti :${PORT} | xargs kill`);
146
+ log.error(` PORT=<number> bun dev`);
147
+ }
148
+ throw error;
149
+ }
150
+ };
151
+ // Reuse existing server on hot reload, create new on first load
152
+ const server = hotState?.server ?? createHttpServer();
153
+ const actualPort = server.port ?? PORT;
154
+ if (!isHotReload) {
155
+ const modeLabel = isDev() ? ' (dev mode)' : '';
156
+ log.info(`MCP server v${version} listening on http://localhost:${actualPort}${modeLabel}`);
157
+ }
158
+ // Write auth.json so the Chrome extension can bootstrap the secret and port
159
+ // without an unauthenticated HTTP request. Written on every reload in case
160
+ // the secret was rotated or the port changed.
161
+ if (state.wsSecret) {
162
+ writeAuthFile(state.wsSecret, actualPort).catch((err) => {
163
+ log.warn('Failed to write auth.json:', err);
164
+ });
165
+ }
166
+ // Install graceful shutdown handlers (once per process, survives hot reloads).
167
+ // Uses a getter so the handler always operates on the latest state reference.
168
+ installShutdownHandlers(() => state);
169
+ // ---------------------------------------------------------------------------
170
+ // Store hot state for the NEXT hot reload
171
+ // ---------------------------------------------------------------------------
172
+ setHotState({
173
+ initialized: true,
174
+ server,
175
+ transports,
176
+ sessionServers,
177
+ state,
178
+ actualPort,
179
+ reloadCount,
180
+ lastReloadTimestamp: reloadResult.lastReloadTimestamp,
181
+ lastReloadDurationMs: reloadResult.lastReloadDurationMs,
182
+ handlers,
183
+ });
184
+ if (isHotReload) {
185
+ log.info(`Hot reload complete (${reloadResult.lastReloadDurationMs}ms)`);
186
+ }
187
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Plugin loader module.
3
+ *
4
+ * Reads plugin artifacts from a resolved directory: package.json (validated
5
+ * via parsePluginPackageJson), dist/adapter.iife.js, and dist/tools.json.
6
+ * Returns a Result so errors are explicitly propagated, not thrown.
7
+ *
8
+ * Pure function: takes a directory path and trust tier, reads files, validates,
9
+ * returns a Result. No side effects, no state mutation.
10
+ */
11
+ import type { PluginSource } from './state.js';
12
+ import type { ManifestPrompt, ManifestResource, ManifestTool, Result, TrustTier } from '@opentabs-dev/shared';
13
+ /** A fully loaded plugin ready for registration */
14
+ interface LoadedPlugin {
15
+ readonly name: string;
16
+ readonly version: string;
17
+ readonly displayName: string;
18
+ readonly description: string;
19
+ readonly urlPatterns: string[];
20
+ readonly trustTier: TrustTier;
21
+ readonly iife: string;
22
+ readonly tools: ManifestTool[];
23
+ readonly resources: ManifestResource[];
24
+ readonly prompts: ManifestPrompt[];
25
+ readonly source: PluginSource;
26
+ readonly sourcePath: string;
27
+ readonly adapterHash: string | undefined;
28
+ readonly npmPackageName: string | undefined;
29
+ /** SDK version the plugin was built with (from tools.json sdkVersion field). Undefined for old plugins. */
30
+ readonly sdkVersion: string | undefined;
31
+ /** Source map content for the adapter IIFE (from dist/adapter.iife.js.map). Undefined for old plugins. */
32
+ readonly iifeSourceMap: string | undefined;
33
+ /** Optional SVG icon for the plugin (from tools.json) */
34
+ readonly iconSvg: string | undefined;
35
+ /** Optional SVG icon for the inactive state (from tools.json) */
36
+ readonly iconInactiveSvg: string | undefined;
37
+ }
38
+ /**
39
+ * Extract the internal plugin name from an npm package name.
40
+ * opentabs-plugin-slack → slack
41
+ * @myorg/opentabs-plugin-jira → myorg-jira
42
+ */
43
+ declare const pluginNameFromPackage: (pkgName: string) => string;
44
+ /**
45
+ * Check plugin tool descriptions for references to browser tool names.
46
+ * Returns an array of { toolName, browserToolName } for each match found.
47
+ */
48
+ declare const checkBrowserToolReferences: (tools: ReadonlyArray<{
49
+ name: string;
50
+ description: string;
51
+ }>) => Array<{
52
+ toolName: string;
53
+ browserToolName: string;
54
+ }>;
55
+ /**
56
+ * Validate an array of tool definitions from dist/tools.json.
57
+ * Each tool must have name, displayName, description, icon, input_schema, output_schema.
58
+ */
59
+ declare const validateTools: (tools: unknown, sourcePath: string) => Result<ManifestTool[], string>;
60
+ /**
61
+ * Validate an array of resource definitions from dist/tools.json.
62
+ * Invalid entries are filtered out with a warning, not a hard failure.
63
+ */
64
+ declare const validateResources: (resources: unknown[], pluginName: string, sourcePath: string) => ManifestResource[];
65
+ /**
66
+ * Validate an array of prompt definitions from dist/tools.json.
67
+ * Invalid entries are filtered out with a warning, not a hard failure.
68
+ */
69
+ declare const validatePrompts: (prompts: unknown[], pluginName: string, sourcePath: string) => ManifestPrompt[];
70
+ /**
71
+ * Parse a semver string into [major, minor] components.
72
+ * Returns null if the string is not a valid semver-like version.
73
+ */
74
+ declare const parseMajorMinor: (version: string) => [number, number] | null;
75
+ /**
76
+ * Check SDK version compatibility between a plugin and the server.
77
+ *
78
+ * Compatibility rule: the plugin's sdkVersion major.minor must be <= the
79
+ * server's SDK major.minor. A plugin built with a newer SDK than the server
80
+ * might use APIs the server doesn't have. A plugin built with an older SDK
81
+ * is assumed backward-compatible.
82
+ */
83
+ declare const checkSdkCompatibility: (pluginSdkVersion: string | undefined, currentServerSdkVersion: string) => {
84
+ compatible: boolean;
85
+ error?: string;
86
+ };
87
+ /**
88
+ * Load a plugin from a resolved directory.
89
+ *
90
+ * Reads package.json (validated via parsePluginPackageJson), dist/adapter.iife.js,
91
+ * and dist/tools.json. Derives the internal plugin name from the npm package name.
92
+ *
93
+ * @param dir - Absolute path to the plugin directory containing package.json
94
+ * @param trustTier - Trust classification for this plugin
95
+ * @param source - How the plugin was discovered: 'npm' or 'local'
96
+ */
97
+ declare const loadPlugin: (dir: string, trustTier: TrustTier, source: PluginSource) => Promise<Result<LoadedPlugin, string>>;
98
+ export { checkBrowserToolReferences, checkSdkCompatibility, loadPlugin, parseMajorMinor, pluginNameFromPackage, validatePrompts, validateResources, validateTools, };
99
+ export type { LoadedPlugin };
100
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}