@egain/egain-mcp-server 1.0.1

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 (693) hide show
  1. package/.speakeasy/templates/src/lib/env.ts +1 -0
  2. package/README.md +119 -0
  3. package/bin/mcp-server.js +47817 -0
  4. package/bin/mcp-server.js.map +371 -0
  5. package/esm/src/cloudflare-worker/cloudflare-worker.d.ts +17 -0
  6. package/esm/src/cloudflare-worker/cloudflare-worker.d.ts.map +1 -0
  7. package/esm/src/cloudflare-worker/cloudflare-worker.js +72 -0
  8. package/esm/src/cloudflare-worker/cloudflare-worker.js.map +1 -0
  9. package/esm/src/cloudflare-worker/landing-page.d.ts +2 -0
  10. package/esm/src/cloudflare-worker/landing-page.d.ts.map +1 -0
  11. package/esm/src/cloudflare-worker/landing-page.js +330 -0
  12. package/esm/src/cloudflare-worker/landing-page.js.map +1 -0
  13. package/esm/src/core.d.ts +10 -0
  14. package/esm/src/core.d.ts.map +1 -0
  15. package/esm/src/core.js +13 -0
  16. package/esm/src/core.js.map +1 -0
  17. package/esm/src/funcs/getAnnouncements.d.ts +25 -0
  18. package/esm/src/funcs/getAnnouncements.d.ts.map +1 -0
  19. package/esm/src/funcs/getAnnouncements.js +111 -0
  20. package/esm/src/funcs/getAnnouncements.js.map +1 -0
  21. package/esm/src/funcs/getAnswers.d.ts +25 -0
  22. package/esm/src/funcs/getAnswers.d.ts.map +1 -0
  23. package/esm/src/funcs/getAnswers.js +115 -0
  24. package/esm/src/funcs/getAnswers.js.map +1 -0
  25. package/esm/src/funcs/getArticle.d.ts +28 -0
  26. package/esm/src/funcs/getArticle.d.ts.map +1 -0
  27. package/esm/src/funcs/getArticle.js +118 -0
  28. package/esm/src/funcs/getArticle.js.map +1 -0
  29. package/esm/src/funcs/getPopularArticles.d.ts +25 -0
  30. package/esm/src/funcs/getPopularArticles.d.ts.map +1 -0
  31. package/esm/src/funcs/getPopularArticles.js +111 -0
  32. package/esm/src/funcs/getPopularArticles.js.map +1 -0
  33. package/esm/src/funcs/getPortals.d.ts +23 -0
  34. package/esm/src/funcs/getPortals.d.ts.map +1 -0
  35. package/esm/src/funcs/getPortals.js +106 -0
  36. package/esm/src/funcs/getPortals.js.map +1 -0
  37. package/esm/src/funcs/makeSuggestion.d.ts +25 -0
  38. package/esm/src/funcs/makeSuggestion.d.ts.map +1 -0
  39. package/esm/src/funcs/makeSuggestion.js +104 -0
  40. package/esm/src/funcs/makeSuggestion.js.map +1 -0
  41. package/esm/src/funcs/queryAnswers.d.ts +25 -0
  42. package/esm/src/funcs/queryAnswers.d.ts.map +1 -0
  43. package/esm/src/funcs/queryAnswers.js +109 -0
  44. package/esm/src/funcs/queryAnswers.js.map +1 -0
  45. package/esm/src/funcs/queryRetrieve.d.ts +27 -0
  46. package/esm/src/funcs/queryRetrieve.d.ts.map +1 -0
  47. package/esm/src/funcs/queryRetrieve.js +115 -0
  48. package/esm/src/funcs/queryRetrieve.js.map +1 -0
  49. package/esm/src/funcs/querySearch.d.ts +16 -0
  50. package/esm/src/funcs/querySearch.d.ts.map +1 -0
  51. package/esm/src/funcs/querySearch.js +98 -0
  52. package/esm/src/funcs/querySearch.js.map +1 -0
  53. package/esm/src/funcs/retrieveChunks.d.ts +27 -0
  54. package/esm/src/funcs/retrieveChunks.d.ts.map +1 -0
  55. package/esm/src/funcs/retrieveChunks.js +117 -0
  56. package/esm/src/funcs/retrieveChunks.js.map +1 -0
  57. package/esm/src/funcs/searchAiSearch.d.ts +16 -0
  58. package/esm/src/funcs/searchAiSearch.d.ts.map +1 -0
  59. package/esm/src/funcs/searchAiSearch.js +102 -0
  60. package/esm/src/funcs/searchAiSearch.js.map +1 -0
  61. package/esm/src/hooks/auth-hook.d.ts +100 -0
  62. package/esm/src/hooks/auth-hook.d.ts.map +1 -0
  63. package/esm/src/hooks/auth-hook.js +1565 -0
  64. package/esm/src/hooks/auth-hook.js.map +1 -0
  65. package/esm/src/hooks/hooks.d.ts +25 -0
  66. package/esm/src/hooks/hooks.d.ts.map +1 -0
  67. package/esm/src/hooks/hooks.js +82 -0
  68. package/esm/src/hooks/hooks.js.map +1 -0
  69. package/esm/src/hooks/portal-cache-hook.d.ts +34 -0
  70. package/esm/src/hooks/portal-cache-hook.d.ts.map +1 -0
  71. package/esm/src/hooks/portal-cache-hook.js +441 -0
  72. package/esm/src/hooks/portal-cache-hook.js.map +1 -0
  73. package/esm/src/hooks/portal-lookup-hook.d.ts +17 -0
  74. package/esm/src/hooks/portal-lookup-hook.d.ts.map +1 -0
  75. package/esm/src/hooks/portal-lookup-hook.js +374 -0
  76. package/esm/src/hooks/portal-lookup-hook.js.map +1 -0
  77. package/esm/src/hooks/registration.d.ts +3 -0
  78. package/esm/src/hooks/registration.d.ts.map +1 -0
  79. package/esm/src/hooks/registration.js +36 -0
  80. package/esm/src/hooks/registration.js.map +1 -0
  81. package/esm/src/hooks/server-routing-hook.d.ts +19 -0
  82. package/esm/src/hooks/server-routing-hook.d.ts.map +1 -0
  83. package/esm/src/hooks/server-routing-hook.js +43 -0
  84. package/esm/src/hooks/server-routing-hook.js.map +1 -0
  85. package/esm/src/hooks/types.d.ts +76 -0
  86. package/esm/src/hooks/types.d.ts.map +1 -0
  87. package/esm/src/hooks/types.js +5 -0
  88. package/esm/src/hooks/types.js.map +1 -0
  89. package/esm/src/lib/base64.d.ts +10 -0
  90. package/esm/src/lib/base64.d.ts.map +1 -0
  91. package/esm/src/lib/base64.js +29 -0
  92. package/esm/src/lib/base64.js.map +1 -0
  93. package/esm/src/lib/config.d.ts +57 -0
  94. package/esm/src/lib/config.d.ts.map +1 -0
  95. package/esm/src/lib/config.js +46 -0
  96. package/esm/src/lib/config.js.map +1 -0
  97. package/esm/src/lib/dlv.d.ts +14 -0
  98. package/esm/src/lib/dlv.d.ts.map +1 -0
  99. package/esm/src/lib/dlv.js +46 -0
  100. package/esm/src/lib/dlv.js.map +1 -0
  101. package/esm/src/lib/encodings.d.ts +52 -0
  102. package/esm/src/lib/encodings.d.ts.map +1 -0
  103. package/esm/src/lib/encodings.js +354 -0
  104. package/esm/src/lib/encodings.js.map +1 -0
  105. package/esm/src/lib/env.d.ts +15 -0
  106. package/esm/src/lib/env.d.ts.map +1 -0
  107. package/esm/src/lib/env.js +27 -0
  108. package/esm/src/lib/env.js.map +1 -0
  109. package/esm/src/lib/files.d.ts +13 -0
  110. package/esm/src/lib/files.d.ts.map +1 -0
  111. package/esm/src/lib/files.js +73 -0
  112. package/esm/src/lib/files.js.map +1 -0
  113. package/esm/src/lib/http.d.ts +67 -0
  114. package/esm/src/lib/http.d.ts.map +1 -0
  115. package/esm/src/lib/http.js +209 -0
  116. package/esm/src/lib/http.js.map +1 -0
  117. package/esm/src/lib/is-plain-object.d.ts +2 -0
  118. package/esm/src/lib/is-plain-object.d.ts.map +1 -0
  119. package/esm/src/lib/is-plain-object.js +38 -0
  120. package/esm/src/lib/is-plain-object.js.map +1 -0
  121. package/esm/src/lib/logger.d.ts +6 -0
  122. package/esm/src/lib/logger.d.ts.map +1 -0
  123. package/esm/src/lib/logger.js +5 -0
  124. package/esm/src/lib/logger.js.map +1 -0
  125. package/esm/src/lib/matchers.d.ts +66 -0
  126. package/esm/src/lib/matchers.d.ts.map +1 -0
  127. package/esm/src/lib/matchers.js +209 -0
  128. package/esm/src/lib/matchers.js.map +1 -0
  129. package/esm/src/lib/primitives.d.ts +11 -0
  130. package/esm/src/lib/primitives.d.ts.map +1 -0
  131. package/esm/src/lib/primitives.js +81 -0
  132. package/esm/src/lib/primitives.js.map +1 -0
  133. package/esm/src/lib/result.d.ts +31 -0
  134. package/esm/src/lib/result.d.ts.map +1 -0
  135. package/esm/src/lib/result.js +31 -0
  136. package/esm/src/lib/result.js.map +1 -0
  137. package/esm/src/lib/retries.d.ts +38 -0
  138. package/esm/src/lib/retries.d.ts.map +1 -0
  139. package/esm/src/lib/retries.js +150 -0
  140. package/esm/src/lib/retries.js.map +1 -0
  141. package/esm/src/lib/schemas.d.ts +19 -0
  142. package/esm/src/lib/schemas.d.ts.map +1 -0
  143. package/esm/src/lib/schemas.js +57 -0
  144. package/esm/src/lib/schemas.js.map +1 -0
  145. package/esm/src/lib/sdks.d.ts +63 -0
  146. package/esm/src/lib/sdks.d.ts.map +1 -0
  147. package/esm/src/lib/sdks.js +258 -0
  148. package/esm/src/lib/sdks.js.map +1 -0
  149. package/esm/src/lib/security.d.ts +83 -0
  150. package/esm/src/lib/security.d.ts.map +1 -0
  151. package/esm/src/lib/security.js +138 -0
  152. package/esm/src/lib/security.js.map +1 -0
  153. package/esm/src/lib/url.d.ts +5 -0
  154. package/esm/src/lib/url.d.ts.map +1 -0
  155. package/esm/src/lib/url.js +22 -0
  156. package/esm/src/lib/url.js.map +1 -0
  157. package/esm/src/mcp-server/cli/start/command.d.ts +2 -0
  158. package/esm/src/mcp-server/cli/start/command.d.ts.map +1 -0
  159. package/esm/src/mcp-server/cli/start/command.js +96 -0
  160. package/esm/src/mcp-server/cli/start/command.js.map +1 -0
  161. package/esm/src/mcp-server/cli/start/impl.d.ts +17 -0
  162. package/esm/src/mcp-server/cli/start/impl.d.ts.map +1 -0
  163. package/esm/src/mcp-server/cli/start/impl.js +98 -0
  164. package/esm/src/mcp-server/cli/start/impl.js.map +1 -0
  165. package/esm/src/mcp-server/cli.d.ts +6 -0
  166. package/esm/src/mcp-server/cli.d.ts.map +1 -0
  167. package/esm/src/mcp-server/cli.js +7 -0
  168. package/esm/src/mcp-server/cli.js.map +1 -0
  169. package/esm/src/mcp-server/console-logger.d.ts +9 -0
  170. package/esm/src/mcp-server/console-logger.d.ts.map +1 -0
  171. package/esm/src/mcp-server/console-logger.js +56 -0
  172. package/esm/src/mcp-server/console-logger.js.map +1 -0
  173. package/esm/src/mcp-server/extensions.d.ts +11 -0
  174. package/esm/src/mcp-server/extensions.d.ts.map +1 -0
  175. package/esm/src/mcp-server/extensions.js +5 -0
  176. package/esm/src/mcp-server/extensions.js.map +1 -0
  177. package/esm/src/mcp-server/mcp-server.d.ts +2 -0
  178. package/esm/src/mcp-server/mcp-server.d.ts.map +1 -0
  179. package/esm/src/mcp-server/mcp-server.js +23 -0
  180. package/esm/src/mcp-server/mcp-server.js.map +1 -0
  181. package/esm/src/mcp-server/prompts.d.ts +26 -0
  182. package/esm/src/mcp-server/prompts.d.ts.map +1 -0
  183. package/esm/src/mcp-server/prompts.js +47 -0
  184. package/esm/src/mcp-server/prompts.js.map +1 -0
  185. package/esm/src/mcp-server/resources.d.ts +32 -0
  186. package/esm/src/mcp-server/resources.d.ts.map +1 -0
  187. package/esm/src/mcp-server/resources.js +82 -0
  188. package/esm/src/mcp-server/resources.js.map +1 -0
  189. package/esm/src/mcp-server/scopes.d.ts +3 -0
  190. package/esm/src/mcp-server/scopes.d.ts.map +1 -0
  191. package/esm/src/mcp-server/scopes.js +5 -0
  192. package/esm/src/mcp-server/scopes.js.map +1 -0
  193. package/esm/src/mcp-server/server.d.ts +16 -0
  194. package/esm/src/mcp-server/server.d.ts.map +1 -0
  195. package/esm/src/mcp-server/server.js +53 -0
  196. package/esm/src/mcp-server/server.js.map +1 -0
  197. package/esm/src/mcp-server/shared.d.ts +8 -0
  198. package/esm/src/mcp-server/shared.d.ts.map +1 -0
  199. package/esm/src/mcp-server/shared.js +61 -0
  200. package/esm/src/mcp-server/shared.js.map +1 -0
  201. package/esm/src/mcp-server/tools/getAnnouncements.d.ts +7 -0
  202. package/esm/src/mcp-server/tools/getAnnouncements.d.ts.map +1 -0
  203. package/esm/src/mcp-server/tools/getAnnouncements.js +44 -0
  204. package/esm/src/mcp-server/tools/getAnnouncements.js.map +1 -0
  205. package/esm/src/mcp-server/tools/getAnswers.d.ts +7 -0
  206. package/esm/src/mcp-server/tools/getAnswers.d.ts.map +1 -0
  207. package/esm/src/mcp-server/tools/getAnswers.js +44 -0
  208. package/esm/src/mcp-server/tools/getAnswers.js.map +1 -0
  209. package/esm/src/mcp-server/tools/getArticle.d.ts +7 -0
  210. package/esm/src/mcp-server/tools/getArticle.d.ts.map +1 -0
  211. package/esm/src/mcp-server/tools/getArticle.js +47 -0
  212. package/esm/src/mcp-server/tools/getArticle.js.map +1 -0
  213. package/esm/src/mcp-server/tools/getPopularArticles.d.ts +7 -0
  214. package/esm/src/mcp-server/tools/getPopularArticles.d.ts.map +1 -0
  215. package/esm/src/mcp-server/tools/getPopularArticles.js +44 -0
  216. package/esm/src/mcp-server/tools/getPopularArticles.js.map +1 -0
  217. package/esm/src/mcp-server/tools/getPortals.d.ts +7 -0
  218. package/esm/src/mcp-server/tools/getPortals.d.ts.map +1 -0
  219. package/esm/src/mcp-server/tools/getPortals.js +42 -0
  220. package/esm/src/mcp-server/tools/getPortals.js.map +1 -0
  221. package/esm/src/mcp-server/tools/makeSuggestion.d.ts +7 -0
  222. package/esm/src/mcp-server/tools/makeSuggestion.d.ts.map +1 -0
  223. package/esm/src/mcp-server/tools/makeSuggestion.js +44 -0
  224. package/esm/src/mcp-server/tools/makeSuggestion.js.map +1 -0
  225. package/esm/src/mcp-server/tools/queryAnswers.d.ts +7 -0
  226. package/esm/src/mcp-server/tools/queryAnswers.d.ts.map +1 -0
  227. package/esm/src/mcp-server/tools/queryAnswers.js +44 -0
  228. package/esm/src/mcp-server/tools/queryAnswers.js.map +1 -0
  229. package/esm/src/mcp-server/tools/queryRetrieve.d.ts +7 -0
  230. package/esm/src/mcp-server/tools/queryRetrieve.d.ts.map +1 -0
  231. package/esm/src/mcp-server/tools/queryRetrieve.js +46 -0
  232. package/esm/src/mcp-server/tools/queryRetrieve.js.map +1 -0
  233. package/esm/src/mcp-server/tools/querySearch.d.ts +7 -0
  234. package/esm/src/mcp-server/tools/querySearch.d.ts.map +1 -0
  235. package/esm/src/mcp-server/tools/querySearch.js +35 -0
  236. package/esm/src/mcp-server/tools/querySearch.js.map +1 -0
  237. package/esm/src/mcp-server/tools/retrieveChunks.d.ts +7 -0
  238. package/esm/src/mcp-server/tools/retrieveChunks.d.ts.map +1 -0
  239. package/esm/src/mcp-server/tools/retrieveChunks.js +46 -0
  240. package/esm/src/mcp-server/tools/retrieveChunks.js.map +1 -0
  241. package/esm/src/mcp-server/tools/searchAiSearch.d.ts +7 -0
  242. package/esm/src/mcp-server/tools/searchAiSearch.d.ts.map +1 -0
  243. package/esm/src/mcp-server/tools/searchAiSearch.js +35 -0
  244. package/esm/src/mcp-server/tools/searchAiSearch.js.map +1 -0
  245. package/esm/src/mcp-server/tools.d.ts +37 -0
  246. package/esm/src/mcp-server/tools.d.ts.map +1 -0
  247. package/esm/src/mcp-server/tools.js +78 -0
  248. package/esm/src/mcp-server/tools.js.map +1 -0
  249. package/esm/src/models/acceptlanguage.d.ts +7 -0
  250. package/esm/src/models/acceptlanguage.d.ts.map +1 -0
  251. package/esm/src/models/acceptlanguage.js +25 -0
  252. package/esm/src/models/acceptlanguage.js.map +1 -0
  253. package/esm/src/models/accessibleportal.d.ts +12 -0
  254. package/esm/src/models/accessibleportal.d.ts.map +1 -0
  255. package/esm/src/models/accessibleportal.js +14 -0
  256. package/esm/src/models/accessibleportal.js.map +1 -0
  257. package/esm/src/models/additionalsnippets.d.ts +17 -0
  258. package/esm/src/models/additionalsnippets.d.ts.map +1 -0
  259. package/esm/src/models/additionalsnippets.js +23 -0
  260. package/esm/src/models/additionalsnippets.js.map +1 -0
  261. package/esm/src/models/aisearchop.d.ts +23 -0
  262. package/esm/src/models/aisearchop.d.ts.map +1 -0
  263. package/esm/src/models/aisearchop.js +24 -0
  264. package/esm/src/models/aisearchop.js.map +1 -0
  265. package/esm/src/models/allaccessibleportals.d.ts +12 -0
  266. package/esm/src/models/allaccessibleportals.d.ts.map +1 -0
  267. package/esm/src/models/allaccessibleportals.js +11 -0
  268. package/esm/src/models/allaccessibleportals.js.map +1 -0
  269. package/esm/src/models/answersrequest.d.ts +28 -0
  270. package/esm/src/models/answersrequest.d.ts.map +1 -0
  271. package/esm/src/models/answersrequest.js +28 -0
  272. package/esm/src/models/answersrequest.js.map +1 -0
  273. package/esm/src/models/answersresponse.d.ts +34 -0
  274. package/esm/src/models/answersresponse.d.ts.map +1 -0
  275. package/esm/src/models/answersresponse.js +38 -0
  276. package/esm/src/models/answersresponse.js.map +1 -0
  277. package/esm/src/models/article.d.ts +59 -0
  278. package/esm/src/models/article.d.ts.map +1 -0
  279. package/esm/src/models/article.js +59 -0
  280. package/esm/src/models/article.js.map +1 -0
  281. package/esm/src/models/articleadditionalattributes.d.ts +4 -0
  282. package/esm/src/models/articleadditionalattributes.d.ts.map +1 -0
  283. package/esm/src/models/articleadditionalattributes.js +22 -0
  284. package/esm/src/models/articleadditionalattributes.js.map +1 -0
  285. package/esm/src/models/articleattachment.d.ts +16 -0
  286. package/esm/src/models/articleattachment.d.ts.map +1 -0
  287. package/esm/src/models/articleattachment.js +20 -0
  288. package/esm/src/models/articleattachment.js.map +1 -0
  289. package/esm/src/models/articleresult.d.ts +43 -0
  290. package/esm/src/models/articleresult.d.ts.map +1 -0
  291. package/esm/src/models/articleresult.js +42 -0
  292. package/esm/src/models/articleresult.js.map +1 -0
  293. package/esm/src/models/articleresultadditionalattributes.d.ts +4 -0
  294. package/esm/src/models/articleresultadditionalattributes.d.ts.map +1 -0
  295. package/esm/src/models/articleresultadditionalattributes.js +21 -0
  296. package/esm/src/models/articleresultadditionalattributes.js.map +1 -0
  297. package/esm/src/models/articleresults.d.ts +12 -0
  298. package/esm/src/models/articleresults.d.ts.map +1 -0
  299. package/esm/src/models/articleresults.js +11 -0
  300. package/esm/src/models/articleresults.js.map +1 -0
  301. package/esm/src/models/articlesearchresult.d.ts +57 -0
  302. package/esm/src/models/articlesearchresult.d.ts.map +1 -0
  303. package/esm/src/models/articlesearchresult.js +62 -0
  304. package/esm/src/models/articlesearchresult.js.map +1 -0
  305. package/esm/src/models/articletype.d.ts +17 -0
  306. package/esm/src/models/articletype.d.ts.map +1 -0
  307. package/esm/src/models/articletype.js +24 -0
  308. package/esm/src/models/articletype.js.map +1 -0
  309. package/esm/src/models/attachmentforcreatesuggestion.d.ts +9 -0
  310. package/esm/src/models/attachmentforcreatesuggestion.d.ts.map +1 -0
  311. package/esm/src/models/attachmentforcreatesuggestion.js +8 -0
  312. package/esm/src/models/attachmentforcreatesuggestion.js.map +1 -0
  313. package/esm/src/models/bookmarkstatus.d.ts +12 -0
  314. package/esm/src/models/bookmarkstatus.d.ts.map +1 -0
  315. package/esm/src/models/bookmarkstatus.js +11 -0
  316. package/esm/src/models/bookmarkstatus.js.map +1 -0
  317. package/esm/src/models/complianceforarticle.d.ts +24 -0
  318. package/esm/src/models/complianceforarticle.d.ts.map +1 -0
  319. package/esm/src/models/complianceforarticle.js +15 -0
  320. package/esm/src/models/complianceforarticle.js.map +1 -0
  321. package/esm/src/models/createdby.d.ts +10 -0
  322. package/esm/src/models/createdby.d.ts.map +1 -0
  323. package/esm/src/models/createdby.js +12 -0
  324. package/esm/src/models/createdby.js.map +1 -0
  325. package/esm/src/models/createsuggestion.d.ts +43 -0
  326. package/esm/src/models/createsuggestion.d.ts.map +1 -0
  327. package/esm/src/models/createsuggestion.js +47 -0
  328. package/esm/src/models/createsuggestion.js.map +1 -0
  329. package/esm/src/models/customattribute.d.ts +13 -0
  330. package/esm/src/models/customattribute.d.ts.map +1 -0
  331. package/esm/src/models/customattribute.js +19 -0
  332. package/esm/src/models/customattribute.js.map +1 -0
  333. package/esm/src/models/department.d.ts +7 -0
  334. package/esm/src/models/department.d.ts.map +1 -0
  335. package/esm/src/models/department.js +9 -0
  336. package/esm/src/models/department.js.map +1 -0
  337. package/esm/src/models/edition.d.ts +22 -0
  338. package/esm/src/models/edition.d.ts.map +1 -0
  339. package/esm/src/models/edition.js +18 -0
  340. package/esm/src/models/edition.js.map +1 -0
  341. package/esm/src/models/errors/apierror.d.ts +13 -0
  342. package/esm/src/models/errors/apierror.d.ts.map +1 -0
  343. package/esm/src/models/errors/apierror.js +12 -0
  344. package/esm/src/models/errors/apierror.js.map +1 -0
  345. package/esm/src/models/errors/httpclienterrors.d.ts +44 -0
  346. package/esm/src/models/errors/httpclienterrors.d.ts.map +1 -0
  347. package/esm/src/models/errors/httpclienterrors.js +56 -0
  348. package/esm/src/models/errors/httpclienterrors.js.map +1 -0
  349. package/esm/src/models/errors/sdkvalidationerror.d.ts +20 -0
  350. package/esm/src/models/errors/sdkvalidationerror.d.ts.map +1 -0
  351. package/esm/src/models/errors/sdkvalidationerror.js +85 -0
  352. package/esm/src/models/errors/sdkvalidationerror.js.map +1 -0
  353. package/esm/src/models/folderbreadcrumb.d.ts +10 -0
  354. package/esm/src/models/folderbreadcrumb.d.ts.map +1 -0
  355. package/esm/src/models/folderbreadcrumb.js +9 -0
  356. package/esm/src/models/folderbreadcrumb.js.map +1 -0
  357. package/esm/src/models/foldersummary.d.ts +12 -0
  358. package/esm/src/models/foldersummary.d.ts.map +1 -0
  359. package/esm/src/models/foldersummary.js +11 -0
  360. package/esm/src/models/foldersummary.js.map +1 -0
  361. package/esm/src/models/getannouncementarticlesop.d.ts +25 -0
  362. package/esm/src/models/getannouncementarticlesop.d.ts.map +1 -0
  363. package/esm/src/models/getannouncementarticlesop.js +26 -0
  364. package/esm/src/models/getannouncementarticlesop.js.map +1 -0
  365. package/esm/src/models/getarticlebyidop.d.ts +57 -0
  366. package/esm/src/models/getarticlebyidop.d.ts.map +1 -0
  367. package/esm/src/models/getarticlebyidop.js +130 -0
  368. package/esm/src/models/getarticlebyidop.js.map +1 -0
  369. package/esm/src/models/getmyportalsop.d.ts +28 -0
  370. package/esm/src/models/getmyportalsop.d.ts.map +1 -0
  371. package/esm/src/models/getmyportalsop.js +29 -0
  372. package/esm/src/models/getmyportalsop.js.map +1 -0
  373. package/esm/src/models/getpopulararticlesop.d.ts +24 -0
  374. package/esm/src/models/getpopulararticlesop.d.ts.map +1 -0
  375. package/esm/src/models/getpopulararticlesop.js +25 -0
  376. package/esm/src/models/getpopulararticlesop.js.map +1 -0
  377. package/esm/src/models/l10nstring.d.ts +7 -0
  378. package/esm/src/models/l10nstring.d.ts.map +1 -0
  379. package/esm/src/models/l10nstring.js +9 -0
  380. package/esm/src/models/l10nstring.js.map +1 -0
  381. package/esm/src/models/languagecode.d.ts +7 -0
  382. package/esm/src/models/languagecode.d.ts.map +1 -0
  383. package/esm/src/models/languagecode.js +40 -0
  384. package/esm/src/models/languagecode.js.map +1 -0
  385. package/esm/src/models/languagecodeparameter.d.ts +7 -0
  386. package/esm/src/models/languagecodeparameter.d.ts.map +1 -0
  387. package/esm/src/models/languagecodeparameter.js +41 -0
  388. package/esm/src/models/languagecodeparameter.js.map +1 -0
  389. package/esm/src/models/languagequeryparameter.d.ts +7 -0
  390. package/esm/src/models/languagequeryparameter.d.ts.map +1 -0
  391. package/esm/src/models/languagequeryparameter.js +41 -0
  392. package/esm/src/models/languagequeryparameter.js.map +1 -0
  393. package/esm/src/models/link.d.ts +10 -0
  394. package/esm/src/models/link.d.ts.map +1 -0
  395. package/esm/src/models/link.js +9 -0
  396. package/esm/src/models/link.js.map +1 -0
  397. package/esm/src/models/makesuggestionop.d.ts +18 -0
  398. package/esm/src/models/makesuggestionop.d.ts.map +1 -0
  399. package/esm/src/models/makesuggestionop.js +19 -0
  400. package/esm/src/models/makesuggestionop.js.map +1 -0
  401. package/esm/src/models/mandatorylanguagequeryparameter.d.ts +7 -0
  402. package/esm/src/models/mandatorylanguagequeryparameter.d.ts.map +1 -0
  403. package/esm/src/models/mandatorylanguagequeryparameter.js +40 -0
  404. package/esm/src/models/mandatorylanguagequeryparameter.js.map +1 -0
  405. package/esm/src/models/milestone.d.ts +10 -0
  406. package/esm/src/models/milestone.d.ts.map +1 -0
  407. package/esm/src/models/milestone.js +9 -0
  408. package/esm/src/models/milestone.js.map +1 -0
  409. package/esm/src/models/milestonename.d.ts +10 -0
  410. package/esm/src/models/milestonename.d.ts.map +1 -0
  411. package/esm/src/models/milestonename.js +9 -0
  412. package/esm/src/models/milestonename.js.map +1 -0
  413. package/esm/src/models/modifiedby.d.ts +10 -0
  414. package/esm/src/models/modifiedby.d.ts.map +1 -0
  415. package/esm/src/models/modifiedby.js +12 -0
  416. package/esm/src/models/modifiedby.js.map +1 -0
  417. package/esm/src/models/order.d.ts +4 -0
  418. package/esm/src/models/order.d.ts.map +1 -0
  419. package/esm/src/models/order.js +9 -0
  420. package/esm/src/models/order.js.map +1 -0
  421. package/esm/src/models/ownedby.d.ts +10 -0
  422. package/esm/src/models/ownedby.d.ts.map +1 -0
  423. package/esm/src/models/ownedby.js +13 -0
  424. package/esm/src/models/ownedby.js.map +1 -0
  425. package/esm/src/models/paginationinfo.d.ts +10 -0
  426. package/esm/src/models/paginationinfo.d.ts.map +1 -0
  427. package/esm/src/models/paginationinfo.js +12 -0
  428. package/esm/src/models/paginationinfo.js.map +1 -0
  429. package/esm/src/models/personalization.d.ts +25 -0
  430. package/esm/src/models/personalization.d.ts.map +1 -0
  431. package/esm/src/models/personalization.js +22 -0
  432. package/esm/src/models/personalization.js.map +1 -0
  433. package/esm/src/models/postportalidanswersop.d.ts +24 -0
  434. package/esm/src/models/postportalidanswersop.d.ts.map +1 -0
  435. package/esm/src/models/postportalidanswersop.js +25 -0
  436. package/esm/src/models/postportalidanswersop.js.map +1 -0
  437. package/esm/src/models/postportalidretrieveop.d.ts +26 -0
  438. package/esm/src/models/postportalidretrieveop.d.ts.map +1 -0
  439. package/esm/src/models/postportalidretrieveop.js +27 -0
  440. package/esm/src/models/postportalidretrieveop.js.map +1 -0
  441. package/esm/src/models/publishview.d.ts +13 -0
  442. package/esm/src/models/publishview.d.ts.map +1 -0
  443. package/esm/src/models/publishview.js +15 -0
  444. package/esm/src/models/publishview.js.map +1 -0
  445. package/esm/src/models/referenceresponse.d.ts +25 -0
  446. package/esm/src/models/referenceresponse.d.ts.map +1 -0
  447. package/esm/src/models/referenceresponse.js +30 -0
  448. package/esm/src/models/referenceresponse.js.map +1 -0
  449. package/esm/src/models/retrieverequest.d.ts +18 -0
  450. package/esm/src/models/retrieverequest.d.ts.map +1 -0
  451. package/esm/src/models/retrieverequest.js +21 -0
  452. package/esm/src/models/retrieverequest.js.map +1 -0
  453. package/esm/src/models/retrieveresponse.d.ts +37 -0
  454. package/esm/src/models/retrieveresponse.d.ts.map +1 -0
  455. package/esm/src/models/retrieveresponse.js +37 -0
  456. package/esm/src/models/retrieveresponse.js.map +1 -0
  457. package/esm/src/models/schemaslink.d.ts +8 -0
  458. package/esm/src/models/schemaslink.d.ts.map +1 -0
  459. package/esm/src/models/schemaslink.js +10 -0
  460. package/esm/src/models/schemaslink.js.map +1 -0
  461. package/esm/src/models/searchresponse.d.ts +14 -0
  462. package/esm/src/models/searchresponse.d.ts.map +1 -0
  463. package/esm/src/models/searchresponse.js +12 -0
  464. package/esm/src/models/searchresponse.js.map +1 -0
  465. package/esm/src/models/searchresult.d.ts +27 -0
  466. package/esm/src/models/searchresult.d.ts.map +1 -0
  467. package/esm/src/models/searchresult.js +32 -0
  468. package/esm/src/models/searchresult.js.map +1 -0
  469. package/esm/src/models/security.d.ts +6 -0
  470. package/esm/src/models/security.d.ts.map +1 -0
  471. package/esm/src/models/security.js +9 -0
  472. package/esm/src/models/security.js.map +1 -0
  473. package/esm/src/models/shorturl.d.ts +9 -0
  474. package/esm/src/models/shorturl.d.ts.map +1 -0
  475. package/esm/src/models/shorturl.js +12 -0
  476. package/esm/src/models/shorturl.js.map +1 -0
  477. package/esm/src/models/sortidnamedepartment.d.ts +4 -0
  478. package/esm/src/models/sortidnamedepartment.d.ts.map +1 -0
  479. package/esm/src/models/sortidnamedepartment.js +10 -0
  480. package/esm/src/models/sortidnamedepartment.js.map +1 -0
  481. package/esm/src/models/stage.d.ts +11 -0
  482. package/esm/src/models/stage.d.ts.map +1 -0
  483. package/esm/src/models/stage.js +11 -0
  484. package/esm/src/models/stage.js.map +1 -0
  485. package/esm/src/models/structuredauthoringfields.d.ts +10 -0
  486. package/esm/src/models/structuredauthoringfields.d.ts.map +1 -0
  487. package/esm/src/models/structuredauthoringfields.js +12 -0
  488. package/esm/src/models/structuredauthoringfields.js.map +1 -0
  489. package/esm/src/models/tag.d.ts +7 -0
  490. package/esm/src/models/tag.d.ts.map +1 -0
  491. package/esm/src/models/tag.js +9 -0
  492. package/esm/src/models/tag.js.map +1 -0
  493. package/esm/src/models/tagcategory.d.ts +14 -0
  494. package/esm/src/models/tagcategory.d.ts.map +1 -0
  495. package/esm/src/models/tagcategory.js +13 -0
  496. package/esm/src/models/tagcategory.js.map +1 -0
  497. package/esm/src/models/taggroup.d.ts +7 -0
  498. package/esm/src/models/taggroup.d.ts.map +1 -0
  499. package/esm/src/models/taggroup.js +10 -0
  500. package/esm/src/models/taggroup.js.map +1 -0
  501. package/esm/src/models/taggroups.d.ts +7 -0
  502. package/esm/src/models/taggroups.d.ts.map +1 -0
  503. package/esm/src/models/taggroups.js +9 -0
  504. package/esm/src/models/taggroups.js.map +1 -0
  505. package/esm/src/models/tags.d.ts +7 -0
  506. package/esm/src/models/tags.d.ts.map +1 -0
  507. package/esm/src/models/tags.js +9 -0
  508. package/esm/src/models/tags.js.map +1 -0
  509. package/esm/src/models/topicbreadcrumb.d.ts +10 -0
  510. package/esm/src/models/topicbreadcrumb.d.ts.map +1 -0
  511. package/esm/src/models/topicbreadcrumb.js +9 -0
  512. package/esm/src/models/topicbreadcrumb.js.map +1 -0
  513. package/esm/src/models/topicsummary.d.ts +10 -0
  514. package/esm/src/models/topicsummary.d.ts.map +1 -0
  515. package/esm/src/models/topicsummary.js +9 -0
  516. package/esm/src/models/topicsummary.js.map +1 -0
  517. package/esm/src/models/workflow.d.ts +10 -0
  518. package/esm/src/models/workflow.d.ts.map +1 -0
  519. package/esm/src/models/workflow.js +10 -0
  520. package/esm/src/models/workflow.js.map +1 -0
  521. package/esm/src/models/workflowmilestone.d.ts +4 -0
  522. package/esm/src/models/workflowmilestone.d.ts.map +1 -0
  523. package/esm/src/models/workflowmilestone.js +10 -0
  524. package/esm/src/models/workflowmilestone.js.map +1 -0
  525. package/esm/src/models/wserrorcommon.d.ts +17 -0
  526. package/esm/src/models/wserrorcommon.d.ts.map +1 -0
  527. package/esm/src/models/wserrorcommon.js +16 -0
  528. package/esm/src/models/wserrorcommon.js.map +1 -0
  529. package/esm/src/types/async.d.ts +23 -0
  530. package/esm/src/types/async.d.ts.map +1 -0
  531. package/esm/src/types/async.js +28 -0
  532. package/esm/src/types/async.js.map +1 -0
  533. package/esm/src/types/blobs.d.ts +2 -0
  534. package/esm/src/types/blobs.d.ts.map +1 -0
  535. package/esm/src/types/blobs.js +20 -0
  536. package/esm/src/types/blobs.js.map +1 -0
  537. package/esm/src/types/enums.d.ts +12 -0
  538. package/esm/src/types/enums.d.ts.map +1 -0
  539. package/esm/src/types/enums.js +7 -0
  540. package/esm/src/types/enums.js.map +1 -0
  541. package/esm/src/types/fp.d.ts +31 -0
  542. package/esm/src/types/fp.d.ts.map +1 -0
  543. package/esm/src/types/fp.js +31 -0
  544. package/esm/src/types/fp.js.map +1 -0
  545. package/esm/src/types/rfcdate.d.ts +21 -0
  546. package/esm/src/types/rfcdate.d.ts.map +1 -0
  547. package/esm/src/types/rfcdate.js +43 -0
  548. package/esm/src/types/rfcdate.js.map +1 -0
  549. package/esm/src/types/streams.d.ts +2 -0
  550. package/esm/src/types/streams.d.ts.map +1 -0
  551. package/esm/src/types/streams.js +15 -0
  552. package/esm/src/types/streams.js.map +1 -0
  553. package/esm/worker-configuration.d.ts +4 -0
  554. package/esm/worker-configuration.d.ts.map +1 -0
  555. package/esm/worker-configuration.js +5 -0
  556. package/esm/worker-configuration.js.map +1 -0
  557. package/manifest.json +96 -0
  558. package/package.json +41 -0
  559. package/scripts/login.js +93 -0
  560. package/scripts/logout.js +53 -0
  561. package/src/cloudflare-worker/cloudflare-worker.ts +98 -0
  562. package/src/cloudflare-worker/landing-page.ts +337 -0
  563. package/src/core.ts +13 -0
  564. package/src/funcs/getAnnouncements.ts +202 -0
  565. package/src/funcs/getArticle.ts +208 -0
  566. package/src/funcs/getPopularArticles.ts +198 -0
  567. package/src/funcs/getPortals.ts +190 -0
  568. package/src/funcs/makeSuggestion.ts +191 -0
  569. package/src/funcs/queryAnswers.ts +191 -0
  570. package/src/funcs/queryRetrieve.ts +197 -0
  571. package/src/funcs/querySearch.ts +181 -0
  572. package/src/hooks/auth-hook.ts +1752 -0
  573. package/src/hooks/auth-pages/config-page.js +531 -0
  574. package/src/hooks/hooks.ts +132 -0
  575. package/src/hooks/portal-cache-hook.ts +505 -0
  576. package/src/hooks/portal-lookup-hook.ts +429 -0
  577. package/src/hooks/registration.ts +43 -0
  578. package/src/hooks/server-routing-hook.ts +58 -0
  579. package/src/hooks/types.ts +107 -0
  580. package/src/lib/base64.ts +37 -0
  581. package/src/lib/config.ts +89 -0
  582. package/src/lib/dlv.ts +53 -0
  583. package/src/lib/encodings.ts +483 -0
  584. package/src/lib/env.ts +41 -0
  585. package/src/lib/files.ts +82 -0
  586. package/src/lib/http.ts +323 -0
  587. package/src/lib/is-plain-object.ts +43 -0
  588. package/src/lib/logger.ts +9 -0
  589. package/src/lib/matchers.ts +350 -0
  590. package/src/lib/primitives.ts +113 -0
  591. package/src/lib/result.ts +50 -0
  592. package/src/lib/retries.ts +218 -0
  593. package/src/lib/schemas.ts +91 -0
  594. package/src/lib/sdks.ts +409 -0
  595. package/src/lib/security.ts +260 -0
  596. package/src/lib/url.ts +33 -0
  597. package/src/mcp-server/cli/start/command.ts +100 -0
  598. package/src/mcp-server/cli/start/impl.ts +133 -0
  599. package/src/mcp-server/cli.ts +13 -0
  600. package/src/mcp-server/console-logger.ts +76 -0
  601. package/src/mcp-server/extensions.ts +17 -0
  602. package/src/mcp-server/mcp-server.ts +26 -0
  603. package/src/mcp-server/prompts.ts +121 -0
  604. package/src/mcp-server/resources.ts +176 -0
  605. package/src/mcp-server/scopes.ts +7 -0
  606. package/src/mcp-server/server.ts +91 -0
  607. package/src/mcp-server/shared.ts +78 -0
  608. package/src/mcp-server/tools/getAnnouncements.ts +53 -0
  609. package/src/mcp-server/tools/getArticle.ts +56 -0
  610. package/src/mcp-server/tools/getPopularArticles.ts +53 -0
  611. package/src/mcp-server/tools/getPortals.ts +51 -0
  612. package/src/mcp-server/tools/makeSuggestion.ts +53 -0
  613. package/src/mcp-server/tools/queryAnswers.ts +53 -0
  614. package/src/mcp-server/tools/queryRetrieve.ts +55 -0
  615. package/src/mcp-server/tools/querySearch.ts +44 -0
  616. package/src/mcp-server/tools.ts +156 -0
  617. package/src/models/acceptlanguage.ts +30 -0
  618. package/src/models/accessibleportal.ts +27 -0
  619. package/src/models/additionalsnippets.ts +43 -0
  620. package/src/models/aisearchop.ts +62 -0
  621. package/src/models/allaccessibleportals.ts +27 -0
  622. package/src/models/answersrequest.ts +67 -0
  623. package/src/models/answersresponse.ts +88 -0
  624. package/src/models/article.ts +120 -0
  625. package/src/models/articleadditionalattributes.ts +27 -0
  626. package/src/models/articleattachment.ts +38 -0
  627. package/src/models/articleresult.ts +91 -0
  628. package/src/models/articleresults.ts +24 -0
  629. package/src/models/articlesearchresult.ts +139 -0
  630. package/src/models/articletype.ts +42 -0
  631. package/src/models/attachmentforcreatesuggestion.ts +18 -0
  632. package/src/models/bookmarkstatus.ts +28 -0
  633. package/src/models/complianceforarticle.ts +48 -0
  634. package/src/models/createdby.ts +22 -0
  635. package/src/models/createsuggestion.ts +108 -0
  636. package/src/models/customattribute.ts +33 -0
  637. package/src/models/department.ts +16 -0
  638. package/src/models/edition.ts +40 -0
  639. package/src/models/errors/apierror.ts +21 -0
  640. package/src/models/errors/httpclienterrors.ts +62 -0
  641. package/src/models/errors/sdkvalidationerror.ts +97 -0
  642. package/src/models/folderbreadcrumb.ts +21 -0
  643. package/src/models/foldersummary.ts +27 -0
  644. package/src/models/getannouncementarticlesop.ts +68 -0
  645. package/src/models/getarticlebyidop.ts +182 -0
  646. package/src/models/getmyportalsop.ts +78 -0
  647. package/src/models/getpopulararticlesop.ts +66 -0
  648. package/src/models/l10nstring.ts +19 -0
  649. package/src/models/languagecode.ts +43 -0
  650. package/src/models/languagecodeparameter.ts +48 -0
  651. package/src/models/languagequeryparameter.ts +48 -0
  652. package/src/models/link.ts +17 -0
  653. package/src/models/makesuggestionop.ts +47 -0
  654. package/src/models/mandatorylanguagequeryparameter.ts +47 -0
  655. package/src/models/milestone.ts +16 -0
  656. package/src/models/milestonename.ts +22 -0
  657. package/src/models/modifiedby.ts +25 -0
  658. package/src/models/order.ts +12 -0
  659. package/src/models/ownedby.ts +22 -0
  660. package/src/models/paginationinfo.ts +24 -0
  661. package/src/models/personalization.ts +55 -0
  662. package/src/models/postportalidanswersop.ts +62 -0
  663. package/src/models/postportalidretrieveop.ts +68 -0
  664. package/src/models/publishview.ts +35 -0
  665. package/src/models/referenceresponse.ts +60 -0
  666. package/src/models/retrieverequest.ts +47 -0
  667. package/src/models/retrieveresponse.ts +92 -0
  668. package/src/models/schemaslink.ts +21 -0
  669. package/src/models/searchresponse.ts +34 -0
  670. package/src/models/searchresult.ts +64 -0
  671. package/src/models/security.ts +14 -0
  672. package/src/models/shorturl.ts +20 -0
  673. package/src/models/sortidnamedepartment.ts +15 -0
  674. package/src/models/stage.ts +20 -0
  675. package/src/models/structuredauthoringfields.ts +24 -0
  676. package/src/models/tagcategory.ts +28 -0
  677. package/src/models/taggroup.ts +13 -0
  678. package/src/models/taggroups.ts +13 -0
  679. package/src/models/tags.ts +15 -0
  680. package/src/models/topicbreadcrumb.ts +21 -0
  681. package/src/models/topicsummary.ts +24 -0
  682. package/src/models/workflow.ts +16 -0
  683. package/src/models/workflowmilestone.ts +13 -0
  684. package/src/models/wserrorcommon.ts +34 -0
  685. package/src/types/async.ts +68 -0
  686. package/src/types/blobs.ts +23 -0
  687. package/src/types/enums.ts +16 -0
  688. package/src/types/fp.ts +50 -0
  689. package/src/types/rfcdate.ts +54 -0
  690. package/src/types/streams.ts +21 -0
  691. package/tsconfig.json +36 -0
  692. package/worker-configuration.d.ts +8489 -0
  693. package/worker-configuration.ts +11 -0
@@ -0,0 +1,374 @@
1
+ /**
2
+ * Portal Lookup Hook for eGain MCP Server
3
+ * Translates portal names to portal IDs in request parameters before sending requests
4
+ */
5
+ export class PortalLookupHook {
6
+ portalCache;
7
+ constructor(portalCache) {
8
+ this.portalCache = portalCache;
9
+ }
10
+ translatePortalName(portalName) {
11
+ // Skip if it's already a numeric ID
12
+ if (/^\d+$/.test(portalName)) {
13
+ return null; // Already an ID, no translation needed
14
+ }
15
+ // Check cache readiness using the same logic as beforeCreateRequest
16
+ const availablePortals = this.portalCache.getAvailablePortals();
17
+ const cacheInitialized = this.portalCache.isCacheInitialized();
18
+ const cacheReady = cacheInitialized || availablePortals.length > 0;
19
+ if (!cacheReady) {
20
+ const isInitializing = this.portalCache.isCacheInitializing();
21
+ if (isInitializing) {
22
+ console.error(`⚠️ LOOKUP: Portal cache still initializing, cannot translate portal name: "${portalName}"`);
23
+ console.error('💡 LOOKUP: Race condition detected - cache initialization in progress');
24
+ }
25
+ else {
26
+ console.error(`⚠️ LOOKUP: Portal cache not ready, cannot translate portal name: "${portalName}"`);
27
+ }
28
+ return null;
29
+ }
30
+ // Try exact match first
31
+ let portalId = this.portalCache.getPortalId(portalName);
32
+ if (portalId) {
33
+ console.error(`✅ LOOKUP: Exact match found "${portalName}" -> "${portalId}"`);
34
+ return portalId;
35
+ }
36
+ // Try fuzzy matching if exact match fails
37
+ portalId = this.fuzzyMatchPortal(portalName, availablePortals);
38
+ if (portalId) {
39
+ console.error(`✅ LOOKUP: Fuzzy match found for "${portalName}" -> "${portalId}"`);
40
+ }
41
+ else {
42
+ console.error(`⚠️ LOOKUP: Portal name "${portalName}" not found in cache. Available portals:`, availablePortals.map(p => p.name).join(', '));
43
+ }
44
+ return portalId;
45
+ }
46
+ fuzzyMatchPortal(searchName, availablePortals) {
47
+ const normalizedSearch = searchName.toLowerCase().trim();
48
+ // Remove common suffixes/prefixes that might differ
49
+ const cleanSearch = normalizedSearch
50
+ .replace(/\s*portal\s*$/i, '')
51
+ .replace(/^portal\s*/i, '')
52
+ .trim();
53
+ for (const portal of availablePortals) {
54
+ const normalizedPortal = portal.name.toLowerCase().trim();
55
+ const cleanPortal = normalizedPortal
56
+ .replace(/\s*portal\s*$/i, '')
57
+ .replace(/^portal\s*/i, '')
58
+ .trim();
59
+ // Try various matching strategies
60
+ if (
61
+ // Exact match after cleaning
62
+ cleanSearch === cleanPortal ||
63
+ // Contains match (search contains portal name or vice versa)
64
+ cleanSearch.includes(cleanPortal) ||
65
+ cleanPortal.includes(cleanSearch) ||
66
+ // Partial word match
67
+ this.wordsMatch(cleanSearch, cleanPortal)) {
68
+ console.error(`🎯 LOOKUP: Fuzzy matched "${searchName}" -> "${portal.name}" (${portal.id})`);
69
+ return portal.id;
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ wordsMatch(search, target) {
75
+ const searchWords = search.split(/\s+/).filter(w => w.length > 2);
76
+ const targetWords = target.split(/\s+/).filter(w => w.length > 2);
77
+ // If either has significant words, check if any match
78
+ if (searchWords.length > 0 && targetWords.length > 0) {
79
+ return searchWords.some(sw => targetWords.some(tw => sw.includes(tw) || tw.includes(sw)));
80
+ }
81
+ return false;
82
+ }
83
+ // Get default portal ID (only from cache, no hard-coded fallbacks)
84
+ getDefaultPortalId() {
85
+ // Try common default portal names from cache only
86
+ const defaultPortalNames = ['Master Portal'];
87
+ for (const defaultName of defaultPortalNames) {
88
+ const portalId = this.translatePortalName(defaultName);
89
+ if (portalId) {
90
+ console.error(`🎯 LOOKUP: Using default portal "${defaultName}" -> ${portalId}`);
91
+ return portalId;
92
+ }
93
+ }
94
+ console.error('⚠️ LOOKUP: No default portal found in cache');
95
+ return null;
96
+ }
97
+ // Get portal name from ID (reverse lookup)
98
+ getPortalNameFromId(portalId) {
99
+ const availablePortals = this.portalCache.getAvailablePortals();
100
+ for (const portal of availablePortals) {
101
+ if (portal.id === portalId) {
102
+ return portal.name;
103
+ }
104
+ }
105
+ return null;
106
+ }
107
+ async beforeRequest(_hookCtx, request) {
108
+ // console.error('🔍 LOOKUP: ===== PORTAL LOOKUP HOOK TRIGGERED =====');
109
+ // console.error('🔍 LOOKUP: Request URL:', request.url);
110
+ // console.error('🔍 LOOKUP: Request method:', request.method);
111
+ // Check if cache is ready (should be ready from SDKInit)
112
+ // Check if URL contains portal name in path (e.g., /portals/{portalName}/)
113
+ const urlObj = new URL(request.url);
114
+ // console.error('🔍 LOOKUP: Full URL:', request.url);
115
+ // console.error('🔍 LOOKUP: URL pathname:', urlObj.pathname);
116
+ // console.error('🔍 LOOKUP: Testing regex /\\/portals\\/([^\\/]+)/ against pathname...');
117
+ const portalPathMatch = urlObj.pathname.match(/\/portals\/([^\/]+)/);
118
+ // console.error('🔍 LOOKUP: Regex match result:', portalPathMatch);
119
+ if (portalPathMatch && portalPathMatch[1]) {
120
+ const portalNameInPath = portalPathMatch[1];
121
+ // Check if it's already a proper portal ID
122
+ const portalIdPattern = /^[a-zA-Z0-9]{2,4}-\d{4,15}$/;
123
+ if (!portalIdPattern.test(portalNameInPath)) {
124
+ console.error(`🔍 LOOKUP: Portal name "${portalNameInPath}" in URL path needs translation...`);
125
+ // Get cache info
126
+ const availablePortals = this.portalCache.getAvailablePortals();
127
+ const cacheInitialized = this.portalCache.isCacheInitialized();
128
+ const cacheReady = cacheInitialized || availablePortals.length > 0;
129
+ if (!cacheReady) {
130
+ console.error(`⚠️ LOOKUP: Cache not ready, cannot translate portal name "${portalNameInPath}" from URL path`);
131
+ // Don't return here - let it continue to wait for cache initialization
132
+ }
133
+ else {
134
+ const translatedPortalId = this.translatePortalName(portalNameInPath);
135
+ if (translatedPortalId) {
136
+ console.error(`🔄 LOOKUP: SUCCESS! Translating URL path: "${portalNameInPath}" -> "${translatedPortalId}"`);
137
+ // Replace portal name in URL path with portal ID
138
+ const newPathname = urlObj.pathname.replace(`/portals/${portalNameInPath}`, `/portals/${translatedPortalId}`);
139
+ urlObj.pathname = newPathname;
140
+ console.error(`🔄 LOOKUP: Original URL: ${request.url}`);
141
+ console.error(`🔄 LOOKUP: Modified URL: ${urlObj.toString()}`);
142
+ // Create new request with modified URL
143
+ const newRequest = new Request(urlObj.toString(), {
144
+ method: request.method,
145
+ headers: request.headers,
146
+ body: request.body
147
+ });
148
+ console.error(`🔄 LOOKUP: ===== RETURNING MODIFIED REQUEST (URL PATH) =====`);
149
+ return newRequest;
150
+ }
151
+ else {
152
+ console.error(`❌ LOOKUP: Failed to translate portal name "${portalNameInPath}" from URL path`);
153
+ }
154
+ }
155
+ }
156
+ else {
157
+ console.error(`✅ LOOKUP: Portal ID "${portalNameInPath}" in URL path already in correct format`);
158
+ }
159
+ }
160
+ // If cache is initializing, wait for it to complete
161
+ if (this.portalCache.isCacheInitializing()) {
162
+ console.error('⏳ LOOKUP: Cache is initializing, waiting for completion...');
163
+ await this.portalCache.waitForCacheInitialization();
164
+ console.error('✅ LOOKUP: Cache initialization completed');
165
+ // Re-check URL translation now that cache is ready
166
+ const portalPathMatch = urlObj.pathname.match(/\/portals\/([^\/]+)/);
167
+ if (portalPathMatch && portalPathMatch[1]) {
168
+ const portalNameInPath = portalPathMatch[1];
169
+ const portalIdPattern = /^[a-zA-Z0-9]{2,4}-\d{4,15}$/;
170
+ if (!portalIdPattern.test(portalNameInPath)) {
171
+ console.error(`🔄 LOOKUP: Re-checking URL translation after cache initialization for: "${portalNameInPath}"`);
172
+ const translatedPortalId = this.translatePortalName(portalNameInPath);
173
+ if (translatedPortalId) {
174
+ console.error(`🔄 LOOKUP: SUCCESS! Post-cache translating URL path: "${portalNameInPath}" -> "${translatedPortalId}"`);
175
+ // Replace portal name in URL path with portal ID
176
+ const newPathname = urlObj.pathname.replace(`/portals/${portalNameInPath}`, `/portals/${translatedPortalId}`);
177
+ urlObj.pathname = newPathname;
178
+ console.error(`🔄 LOOKUP: Original URL: ${request.url}`);
179
+ console.error(`🔄 LOOKUP: Modified URL: ${urlObj.toString()}`);
180
+ // Create new request with modified URL
181
+ const newRequest = new Request(urlObj.toString(), {
182
+ method: request.method,
183
+ headers: request.headers,
184
+ body: request.body
185
+ });
186
+ // console.error(`🔄 LOOKUP: ===== RETURNING MODIFIED REQUEST (POST-CACHE) =====`);
187
+ return newRequest;
188
+ }
189
+ else {
190
+ console.error(`❌ LOOKUP: Post-cache translation failed for portal name "${portalNameInPath}"`);
191
+ }
192
+ }
193
+ }
194
+ }
195
+ const availablePortals = this.portalCache.getAvailablePortals();
196
+ const cacheReady = this.portalCache.isCacheInitialized() || availablePortals.length > 0;
197
+ if (!cacheReady) {
198
+ console.error('⚠️ LOOKUP: Portal cache not ready, using fallback behavior');
199
+ console.error('💡 LOOKUP: Will use portalId as-is and attempt minimal translation');
200
+ // Don't return early - try to do what we can with the request
201
+ }
202
+ console.error(`📂 LOOKUP: Portal cache ready with ${availablePortals.length} portals, proceeding with translation`);
203
+ // Process request body for portal name translation
204
+ if (request.headers.get('content-type')?.includes('application/json')) {
205
+ try {
206
+ // Clone the request to avoid "already used" error
207
+ const clonedRequest = request.clone();
208
+ const body = await clonedRequest.text();
209
+ if (body.trim().startsWith('{') || body.trim().startsWith('[')) {
210
+ const parsedJson = JSON.parse(body);
211
+ let bodyModified = false;
212
+ // Check for both portalID (uppercase D) and portalId (lowercase d)
213
+ const currentPortalId = parsedJson.portalID || parsedJson.portalId;
214
+ // Log current portal lookup context
215
+ if (parsedJson.channel && parsedJson.channel.name) {
216
+ console.error(`🎯 LOOKUP: Portal name detected in channel.name: "${parsedJson.channel.name}"`);
217
+ }
218
+ else if (parsedJson.channel && parsedJson.channel.type === 'portal') {
219
+ console.error(`⚠️ LOOKUP: Channel type is "portal" but no channel.name provided for lookup`);
220
+ }
221
+ else {
222
+ console.error(`📋 LOOKUP: No portal name in channel.name, will use portalID as-is: ${currentPortalId}`);
223
+ }
224
+ // Process portal_name in JSON body
225
+ if (parsedJson.portal_name && typeof parsedJson.portal_name === 'string') {
226
+ const portalId = this.translatePortalName(parsedJson.portal_name);
227
+ if (portalId) {
228
+ console.error(`🔄 LOOKUP: Translated JSON field portal_name: "${parsedJson.portal_name}" -> portal_id: "${portalId}"`);
229
+ parsedJson.portal_id = portalId;
230
+ delete parsedJson.portal_name;
231
+ bodyModified = true;
232
+ }
233
+ }
234
+ // Process portalID field (MCP tools use uppercase D)
235
+ if (parsedJson.portalID && typeof parsedJson.portalID === 'string') {
236
+ // Check if portalID doesn't match the expected pattern (prefix-digits)
237
+ const portalIdPattern = /^[a-zA-Z0-9]{2,4}-\d{4,15}$/;
238
+ const patternMatches = portalIdPattern.test(parsedJson.portalID);
239
+ if (!patternMatches) {
240
+ const translatedPortalId = this.translatePortalName(parsedJson.portalID);
241
+ console.error(`🔍 LOOKUP: Translation result: "${translatedPortalId}"`);
242
+ if (translatedPortalId) {
243
+ console.error(`🔄 LOOKUP: SUCCESS! Translated portalID: "${parsedJson.portalID}" -> "${translatedPortalId}"`);
244
+ console.error(`🔄 LOOKUP: BEFORE assignment - parsedJson.portalID = "${parsedJson.portalID}"`);
245
+ parsedJson.portalID = translatedPortalId;
246
+ console.error(`🔄 LOOKUP: AFTER assignment - parsedJson.portalID = "${parsedJson.portalID}"`);
247
+ bodyModified = true;
248
+ console.error(`🔄 LOOKUP: bodyModified set to: ${bodyModified}`);
249
+ }
250
+ else {
251
+ console.error(`❌ LOOKUP: Failed to translate portalID "${parsedJson.portalID}". Available portals: ${availablePortals.map(p => p.name).slice(0, 5).join(', ')}${availablePortals.length > 5 ? '...' : ''}`);
252
+ }
253
+ }
254
+ else {
255
+ console.error(`✅ LOOKUP: portalID "${parsedJson.portalID}" already in correct format, no translation needed`);
256
+ }
257
+ }
258
+ // Process portalId field (lowercase d for compatibility)
259
+ if (parsedJson.portalId && typeof parsedJson.portalId === 'string') {
260
+ // Check if portalId doesn't match the expected pattern (prefix-digits)
261
+ const portalIdPattern = /^[a-zA-Z0-9]{2,4}-\d{4,15}$/;
262
+ if (!portalIdPattern.test(parsedJson.portalId)) {
263
+ console.error(`🔍 LOOKUP: portalId "${parsedJson.portalId}" doesn't match expected pattern, attempting translation...`);
264
+ const translatedPortalId = this.translatePortalName(parsedJson.portalId);
265
+ if (translatedPortalId) {
266
+ console.error(`🔄 LOOKUP: Translated portalId: "${parsedJson.portalId}" -> "${translatedPortalId}"`);
267
+ parsedJson.portalId = translatedPortalId;
268
+ bodyModified = true;
269
+ }
270
+ else {
271
+ console.error(`❌ LOOKUP: Failed to translate portalId "${parsedJson.portalId}". Available portals: ${availablePortals.map(p => p.name).slice(0, 5).join(', ')}${availablePortals.length > 5 ? '...' : ''}`);
272
+ }
273
+ }
274
+ else {
275
+ console.error(`✅ LOOKUP: portalId "${parsedJson.portalId}" already in correct format, no translation needed`);
276
+ }
277
+ }
278
+ // Process channel.name in JSON body (for eGain requests)
279
+ if (parsedJson.channel &&
280
+ typeof parsedJson.channel === 'object' &&
281
+ parsedJson.channel.name &&
282
+ typeof parsedJson.channel.name === 'string') {
283
+ const portalId = this.translatePortalName(parsedJson.channel.name);
284
+ if (portalId) {
285
+ console.error(`🔄 LOOKUP: Translated JSON field channel.name: "${parsedJson.channel.name}" -> portalId: "${portalId}"`);
286
+ parsedJson.portalId = portalId;
287
+ bodyModified = true;
288
+ }
289
+ else {
290
+ console.error(`❌ LOOKUP: Failed to translate portal name "${parsedJson.channel.name}". Available portals: ${availablePortals.map(p => p.name).slice(0, 5).join(', ')}${availablePortals.length > 5 ? '...' : ''}`);
291
+ console.error(`💡 LOOKUP: Make sure the portal name matches exactly or use fuzzy matching patterns`);
292
+ }
293
+ }
294
+ // Process portalId if it's 1 (default/placeholder) and we have channel info
295
+ if (parsedJson.portalId === 1 &&
296
+ parsedJson.channel &&
297
+ typeof parsedJson.channel === 'object' &&
298
+ parsedJson.channel.name &&
299
+ typeof parsedJson.channel.name === 'string') {
300
+ const portalId = this.translatePortalName(parsedJson.channel.name);
301
+ if (portalId) {
302
+ console.error(`🔄 LOOKUP: Replaced default portalId: 1 with "${parsedJson.channel.name}" -> portalId: "${portalId}"`);
303
+ parsedJson.portalId = portalId;
304
+ bodyModified = true;
305
+ }
306
+ }
307
+ // Handle case where channel.type is "portal" but no channel.name is provided
308
+ if (parsedJson.portalId === 1 &&
309
+ parsedJson.channel &&
310
+ typeof parsedJson.channel === 'object' &&
311
+ parsedJson.channel.type === 'portal' &&
312
+ !parsedJson.channel.name) {
313
+ console.error('⚠️ LOOKUP: Portal type="portal" specified but no channel.name provided for lookup');
314
+ if (cacheReady) {
315
+ // Try to get a default portal from cache
316
+ const portalId = this.getDefaultPortalId();
317
+ if (portalId) {
318
+ const portalName = this.getPortalNameFromId(portalId) || 'Default Portal';
319
+ console.error(`🔄 LOOKUP: No portal name provided, using default portal: "${portalName}" -> portalId: "${portalId}"`);
320
+ parsedJson.portalId = portalId;
321
+ // Also set the channel name for clarity
322
+ parsedJson.channel.name = portalName;
323
+ bodyModified = true;
324
+ }
325
+ else {
326
+ console.error('❌ LOOKUP: No portal name provided and no default portal available in cache');
327
+ console.error('💡 LOOKUP: Please specify channel.name with a valid portal name (e.g., "eBrain")');
328
+ }
329
+ }
330
+ else {
331
+ // Cache not ready - cannot proceed without cache
332
+ console.error('❌ LOOKUP: Cache not ready and no default portal available');
333
+ console.error('💡 LOOKUP: Portal cache must be initialized before making requests');
334
+ }
335
+ }
336
+ // Handle case where portalId is a placeholder value (like 100) that needs translation
337
+ if ((parsedJson.portalId === 100 || parsedJson.portalId === 1) &&
338
+ parsedJson.channel &&
339
+ typeof parsedJson.channel === 'object' &&
340
+ parsedJson.channel.type === 'portal' &&
341
+ !cacheReady) {
342
+ console.error('❌ LOOKUP: Cache not ready and portalId needs translation - cannot proceed without cache');
343
+ console.error('💡 LOOKUP: Please ensure portal cache is initialized before making requests');
344
+ // Don't use hardcoded fallbacks - let the request fail properly
345
+ }
346
+ if (bodyModified) {
347
+ const newBody = JSON.stringify(parsedJson);
348
+ // console.error(`🔄 LOOKUP: ===== REQUEST BODY MODIFIED =====`);
349
+ // console.error(`🔄 LOOKUP: Original body: ${body}`);
350
+ // console.error(`🔄 LOOKUP: Modified body: ${newBody}`);
351
+ // console.error(`🔄 LOOKUP: Creating new request with modified body...`);
352
+ const newRequest = new Request(request.url, {
353
+ method: request.method,
354
+ headers: request.headers,
355
+ body: newBody
356
+ });
357
+ console.error(`🔄 LOOKUP: ===== RETURNING MODIFIED REQUEST =====`);
358
+ return newRequest;
359
+ }
360
+ else {
361
+ // console.error(`🔄 LOOKUP: No modifications made to request body`);
362
+ // console.error('⚠️ Request body NOT modified. Final request will use original portalId:', parsedJson.portalId || parsedJson.portalID);
363
+ }
364
+ }
365
+ }
366
+ catch (error) {
367
+ console.error('Failed to parse JSON body for portal translation:', error);
368
+ }
369
+ }
370
+ console.error(`🔄 LOOKUP: ===== RETURNING ORIGINAL REQUEST =====`);
371
+ return request;
372
+ }
373
+ }
374
+ //# sourceMappingURL=portal-lookup-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-lookup-hook.js","sourceRoot":"","sources":["../../../src/hooks/portal-lookup-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Hooks } from "./types.js";
2
+ export declare function initHooks(hooks: Hooks): void;
3
+ //# sourceMappingURL=registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYnC,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,QA8BrC"}
@@ -0,0 +1,36 @@
1
+ import { AuthenticationHook } from "./auth-hook.js";
2
+ import { PortalCacheHook } from "./portal-cache-hook.js";
3
+ import { PortalLookupHook } from "./portal-lookup-hook.js";
4
+ import { ServerRoutingHook } from "./server-routing-hook.js";
5
+ /*
6
+ * This file is only ever generated once on the first generation and then is free to be modified.
7
+ * Any hooks you wish to add should be registered in the initHooks function. Feel free to define them
8
+ * in this file or in separate files in the hooks folder.
9
+ */
10
+ export function initHooks(hooks) {
11
+ console.error('🚀 Initializing eGain MCP hooks...');
12
+ // 1. Server Routing Hook - routes operations to correct API server
13
+ // Register this FIRST before request creation so URLs are correct from the start
14
+ const serverRoutingHook = new ServerRoutingHook();
15
+ hooks.registerBeforeCreateRequestHook(serverRoutingHook);
16
+ console.error('✅ ROUTING: Registered server routing hook for before create request');
17
+ // 2. Portal Cache Hook - caches portal names/IDs after authentication
18
+ // Create this so we can pass it to the auth hook
19
+ const portalCacheHook = new PortalCacheHook();
20
+ hooks.registerSDKInitHook(portalCacheHook); // Handles full initialization
21
+ hooks.registerBeforeCreateRequestHook(portalCacheHook); // Synchronous readiness check only
22
+ console.error('✅ CACHE: Registered portal cache hook for SDK init and before create request');
23
+ // 3. Authentication Hook - handles login popup and token management
24
+ // Pass portal cache hook reference so it can trigger cache initialization after auth
25
+ const authHook = new AuthenticationHook(portalCacheHook);
26
+ hooks.registerSDKInitHook(authHook);
27
+ hooks.registerBeforeRequestHook(authHook); // Register for automatic token refresh
28
+ console.error('✅ AUTH: Registered authentication hook for SDK init and before request');
29
+ // 4. Portal Lookup Hook - translates portal names to IDs in requests
30
+ // Now synchronous since cache is guaranteed ready after SDKInit
31
+ const portalLookupHook = new PortalLookupHook(portalCacheHook);
32
+ hooks.registerBeforeRequestHook(portalLookupHook); // Should be mostly synchronous now
33
+ console.error('✅ LOOKUP: Registered portal lookup hook for before request');
34
+ console.error('🎉 All eGain MCP hooks registered successfully!');
35
+ }
36
+ //# sourceMappingURL=registration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AAEH,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAEpD,mEAAmE;IACnE,iFAAiF;IACjF,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClD,KAAK,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAErF,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,8BAA8B;IAC1E,KAAK,CAAC,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC,mCAAmC;IAC3F,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAE9F,oEAAoE;IACpE,qFAAqF;IACrF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzD,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACpC,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,uCAAuC;IAClF,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAExF,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/D,KAAK,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,CAAC,mCAAmC;IACtF,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAE5E,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { BeforeCreateRequestContext, BeforeCreateRequestHook } from "./types.js";
2
+ import { RequestInput } from "../lib/http.js";
3
+ /**
4
+ * Server Routing Hook
5
+ *
6
+ * Automatically routes operations to the correct API server:
7
+ * - Most operations → Portal Manager API (server_0): /knowledge/portalmgr/v4
8
+ * - Answers & Retrieve → AI Services API (server_1): /core/aiservices/v4
9
+ *
10
+ * Why this hook exists:
11
+ * Speakeasy doesn't support automatic per-operation server routing.
12
+ * Using operation-level servers in the OpenAPI spec breaks the --api-domain flag.
13
+ * This hook provides transparent routing while keeping --api-domain functional.
14
+ */
15
+ export declare class ServerRoutingHook implements BeforeCreateRequestHook {
16
+ private readonly aiServicesOperations;
17
+ beforeCreateRequest(hookCtx: BeforeCreateRequestContext, input: RequestInput): RequestInput;
18
+ }
19
+ //# sourceMappingURL=server-routing-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-routing-hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/server-routing-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAkB,YAAW,uBAAuB;IAE/D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGlC;IAEH,mBAAmB,CACjB,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,YAAY,GAClB,YAAY;CA+BhB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Server Routing Hook
3
+ *
4
+ * Automatically routes operations to the correct API server:
5
+ * - Most operations → Portal Manager API (server_0): /knowledge/portalmgr/v4
6
+ * - Answers & Retrieve → AI Services API (server_1): /core/aiservices/v4
7
+ *
8
+ * Why this hook exists:
9
+ * Speakeasy doesn't support automatic per-operation server routing.
10
+ * Using operation-level servers in the OpenAPI spec breaks the --api-domain flag.
11
+ * This hook provides transparent routing while keeping --api-domain functional.
12
+ */
13
+ export class ServerRoutingHook {
14
+ // Operations that need AI Services API
15
+ aiServicesOperations = new Set([
16
+ "post_/{portalID}/answers",
17
+ "post_/{portalID}/retrieve",
18
+ ]);
19
+ beforeCreateRequest(hookCtx, input) {
20
+ const operationID = hookCtx.operationID;
21
+ // Check if this operation needs AI Services API
22
+ if (this.aiServicesOperations.has(operationID)) {
23
+ console.error(`🔀 ROUTING: Operation "${operationID}" → AI Services API (/core/aiservices/v4)`);
24
+ // Parse the URL
25
+ const url = new URL(input.url);
26
+ // Replace Portal Manager path with AI Services path
27
+ if (url.pathname.includes('/knowledge/portalmgr/v4')) {
28
+ url.pathname = url.pathname.replace('/knowledge/portalmgr/v4', '/core/aiservices/v4');
29
+ console.error(`🔀 ROUTING: Rewritten URL: ${url.toString()}`);
30
+ return {
31
+ ...input,
32
+ url,
33
+ };
34
+ }
35
+ else {
36
+ console.error(`⚠️ ROUTING: Expected /knowledge/portalmgr/v4 in URL but found: ${url.pathname}`);
37
+ }
38
+ }
39
+ // All other operations stay on Portal Manager API (default)
40
+ return input;
41
+ }
42
+ }
43
+ //# sourceMappingURL=server-routing-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-routing-hook.js","sourceRoot":"","sources":["../../../src/hooks/server-routing-hook.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,iBAAiB;IAC5B,uCAAuC;IACtB,oBAAoB,GAAG,IAAI,GAAG,CAAC;QAC9C,0BAA0B;QAC1B,2BAA2B;KAC5B,CAAC,CAAC;IAEH,mBAAmB,CACjB,OAAmC,EACnC,KAAmB;QAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAExC,gDAAgD;QAChD,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,0BAA0B,WAAW,2CAA2C,CAAC,CAAC;YAEhG,gBAAgB;YAChB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/B,oDAAoD;YACpD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CACjC,yBAAyB,EACzB,qBAAqB,CACtB,CAAC;gBAEF,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAE9D,OAAO;oBACL,GAAG,KAAK;oBACR,GAAG;iBACJ,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,mEAAmE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,76 @@
1
+ import { SDKOptions } from "../lib/config.js";
2
+ import { RequestInput } from "../lib/http.js";
3
+ import { RetryConfig } from "../lib/retries.js";
4
+ import { SecurityState } from "../lib/security.js";
5
+ export type HookContext = {
6
+ baseURL: string | URL;
7
+ operationID: string;
8
+ oAuth2Scopes: string[] | null;
9
+ securitySource?: any | (() => Promise<any>);
10
+ retryConfig: RetryConfig;
11
+ resolvedSecurity: SecurityState | null;
12
+ options: SDKOptions;
13
+ };
14
+ export type Awaitable<T> = T | Promise<T>;
15
+ export type BeforeCreateRequestContext = HookContext & {};
16
+ export type BeforeRequestContext = HookContext & {};
17
+ export type AfterSuccessContext = HookContext & {};
18
+ export type AfterErrorContext = HookContext & {};
19
+ /**
20
+ * SDKInitHook is called when the SDK is initializing. The
21
+ * hook can return a new baseURL and HTTP client to be used by the SDK.
22
+ */
23
+ export interface SDKInitHook {
24
+ sdkInit: (opts: SDKOptions) => SDKOptions;
25
+ }
26
+ export interface BeforeCreateRequestHook {
27
+ /**
28
+ * A hook that is called before the SDK creates a `Request` object. The hook
29
+ * can modify how a request is constructed since certain modifications, like
30
+ * changing the request URL, cannot be done on a request object directly.
31
+ */
32
+ beforeCreateRequest: (hookCtx: BeforeCreateRequestContext, input: RequestInput) => RequestInput;
33
+ }
34
+ export interface BeforeRequestHook {
35
+ /**
36
+ * A hook that is called before the SDK sends a request. The hook can
37
+ * introduce instrumentation code such as logging, tracing and metrics or
38
+ * replace the request before it is sent or throw an error to stop the
39
+ * request from being sent.
40
+ */
41
+ beforeRequest: (hookCtx: BeforeRequestContext, request: Request) => Awaitable<Request>;
42
+ }
43
+ export interface AfterSuccessHook {
44
+ /**
45
+ * A hook that is called after the SDK receives a response. The hook can
46
+ * introduce instrumentation code such as logging, tracing and metrics or
47
+ * modify the response before it is handled or throw an error to stop the
48
+ * response from being handled.
49
+ */
50
+ afterSuccess: (hookCtx: AfterSuccessContext, response: Response) => Awaitable<Response>;
51
+ }
52
+ export interface AfterErrorHook {
53
+ /**
54
+ * A hook that is called after the SDK encounters an error, or a
55
+ * non-successful response. The hook can introduce instrumentation code such
56
+ * as logging, tracing and metrics or modify the response or error values.
57
+ */
58
+ afterError: (hookCtx: AfterErrorContext, response: Response | null, error: unknown) => Awaitable<{
59
+ response: Response | null;
60
+ error: unknown;
61
+ }>;
62
+ }
63
+ export interface Hooks {
64
+ /** Registers a hook to be used by the SDK for initialization event. */
65
+ registerSDKInitHook(hook: SDKInitHook): void;
66
+ /** Registers a hook to be used by the SDK for to modify `Request` construction. */
67
+ registerBeforeCreateRequestHook(hook: BeforeCreateRequestHook): void;
68
+ /** Registers a hook to be used by the SDK for the before request event. */
69
+ registerBeforeRequestHook(hook: BeforeRequestHook): void;
70
+ /** Registers a hook to be used by the SDK for the after success event. */
71
+ registerAfterSuccessHook(hook: AfterSuccessHook): void;
72
+ /** Registers a hook to be used by the SDK for the after error event. */
73
+ registerAfterErrorHook(hook: AfterErrorHook): void;
74
+ }
75
+ export type Hook = SDKInitHook | BeforeCreateRequestHook | BeforeRequestHook | AfterSuccessHook | AfterErrorHook;
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,EAAE,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,EAAE,CAAC;AACpD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,EAAE,CAAC;AACnD,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,EAAE,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,mBAAmB,EAAE,CACnB,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,YAAY,KAChB,YAAY,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,aAAa,EAAE,CACb,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,OAAO,KACb,SAAS,CAAC,OAAO,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,CACZ,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,QAAQ,KACf,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,UAAU,EAAE,CACV,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,KAAK,EAAE,OAAO,KACX,SAAS,CAAC;QACb,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,KAAK;IACpB,uEAAuE;IACvE,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7C,mFAAmF;IACnF,+BAA+B,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACrE,2EAA2E;IAC3E,yBAAyB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzD,0EAA0E;IAC1E,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvD,wEAAwE;IACxE,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,MAAM,IAAI,GACZ,WAAW,GACX,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,10 @@
1
+ import * as z from "zod";
2
+ export declare function bytesToBase64(u8arr: Uint8Array): string;
3
+ export declare function bytesFromBase64(encoded: string): Uint8Array;
4
+ export declare function stringToBytes(str: string): Uint8Array;
5
+ export declare function stringFromBytes(u8arr: Uint8Array): string;
6
+ export declare function stringToBase64(str: string): string;
7
+ export declare function stringFromBase64(b64str: string): string;
8
+ export declare const zodOutbound: z.ZodUnion<[z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>, z.ZodEffects<z.ZodString, Uint8Array<ArrayBufferLike>, string>]>;
9
+ export declare const zodInbound: z.ZodUnion<[z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>, z.ZodEffects<z.ZodString, Uint8Array<ArrayBufferLike>, string>]>;
10
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../../src/lib/base64.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAE3D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAErD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,WAAW,yJAEkB,CAAC;AAE3C,eAAO,MAAM,UAAU,yJAEqB,CAAC"}