@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,531 @@
1
+ const FIELDS = ['egainUrl', 'authUrl', 'accessTokenUrl', 'clientId', 'redirectUrl', 'clientSecret', 'scopePrefix'];
2
+ const FIELD_LABELS = {
3
+ egainUrl: 'eGain URL', authUrl: 'Auth URL', accessTokenUrl: 'Token URL',
4
+ clientId: 'Client ID', redirectUrl: 'Redirect URL', clientSecret: 'Client Secret',
5
+ scopePrefix: 'Scope Prefix'
6
+ };
7
+
8
+ let savedConfigData = null; // Store config in memory only
9
+ let authenticationStarted = false; // Track if user started authentication process
10
+ let lastSubmittedConfig = null; // Track last submitted config to prevent duplicate submissions
11
+ let isSubmitting = false; // Track if form submission is in progress
12
+
13
+ // Fetch saved config from backend (secure file storage)
14
+ async function loadSavedConfig() {
15
+ try {
16
+ const response = await fetch('/get-config');
17
+ if (response.ok) {
18
+ const data = await response.json();
19
+ if (data.config && data.config.egainUrl && data.config.clientId) {
20
+ // Only set if we have valid required fields
21
+ savedConfigData = data.config;
22
+ return true;
23
+ }
24
+ }
25
+ } catch (error) {
26
+ console.error('Could not load saved config:', error);
27
+ }
28
+ savedConfigData = null;
29
+ return false;
30
+ }
31
+
32
+ function hasSavedConfig() {
33
+ return savedConfigData &&
34
+ savedConfigData.egainUrl &&
35
+ savedConfigData.clientId &&
36
+ savedConfigData.authUrl &&
37
+ savedConfigData.accessTokenUrl;
38
+ }
39
+
40
+ function displaySavedConfig() {
41
+ const listEl = document.getElementById('savedConfigList');
42
+ listEl.innerHTML = '';
43
+ if (!savedConfigData) return;
44
+
45
+ FIELDS.forEach(field => {
46
+ const value = savedConfigData[field];
47
+ if (value) {
48
+ const item = document.createElement('div');
49
+ item.className = 'config-item';
50
+ const label = document.createElement('span');
51
+ label.className = 'config-label';
52
+ label.textContent = FIELD_LABELS[field];
53
+ const valueSpan = document.createElement('span');
54
+ valueSpan.className = 'config-value';
55
+ if (field === 'clientSecret') {
56
+ valueSpan.classList.add('masked');
57
+ valueSpan.textContent = '••••••••';
58
+ } else if (field === 'clientId') {
59
+ valueSpan.textContent = value.substring(0, 8) + '...';
60
+ } else {
61
+ valueSpan.textContent = value.length > 40 ? value.substring(0, 40) + '...' : value;
62
+ }
63
+ item.appendChild(label);
64
+ item.appendChild(valueSpan);
65
+ listEl.appendChild(item);
66
+ }
67
+ });
68
+ }
69
+
70
+ function showQuickSignin() {
71
+ document.getElementById('quickSigninView').style.display = 'block';
72
+ document.getElementById('formView').style.display = 'none';
73
+ displaySavedConfig();
74
+ }
75
+
76
+ function showForm() {
77
+ document.getElementById('quickSigninView').style.display = 'none';
78
+ document.getElementById('formView').style.display = 'block';
79
+ loadFormValues();
80
+ }
81
+
82
+ function loadFormValues() {
83
+ if (!savedConfigData) return;
84
+
85
+ // Load all field values
86
+ FIELDS.forEach(field => {
87
+ const value = savedConfigData[field];
88
+ if (value) document.getElementById(field).value = value;
89
+ });
90
+
91
+ // Show advanced settings if clientSecret or scopePrefix exist
92
+ if (savedConfigData.clientSecret || savedConfigData.scopePrefix) {
93
+ toggleAdvancedSettings();
94
+ }
95
+ }
96
+
97
+ async function clearConfigAndShowForm() {
98
+ showModal(
99
+ 'Clear All Configuration?',
100
+ 'This will delete all saved OAuth settings from your home directory. You will need to re-enter them next time.',
101
+ async (confirmed) => {
102
+ if (confirmed) {
103
+ try {
104
+ const response = await fetch('/clear-config', { method: 'POST' });
105
+ if (response.ok) {
106
+ savedConfigData = null;
107
+ FIELDS.forEach(field => {
108
+ document.getElementById(field).value = '';
109
+ });
110
+ showStatus('Configuration cleared successfully', 'success');
111
+ showForm();
112
+ } else {
113
+ showStatus('Failed to clear configuration', 'error');
114
+ }
115
+ } catch (error) {
116
+ showStatus('Error clearing configuration: ' + error.message, 'error');
117
+ }
118
+ }
119
+ },
120
+ 'Clear All'
121
+ );
122
+ }
123
+
124
+ function cancelForm() {
125
+ if (hasSavedConfig()) {
126
+ showQuickSignin();
127
+ } else {
128
+ showModal(
129
+ 'Cancel Authentication?',
130
+ "You haven't saved any configuration yet. This will cancel the authentication process.",
131
+ async (confirmed) => {
132
+ if (confirmed) {
133
+ // Notify server that user cancelled
134
+ try {
135
+ await fetch('/cancel', { method: 'POST' });
136
+ } catch (error) {
137
+ console.error('Could not notify server of cancellation:', error);
138
+ }
139
+ window.close();
140
+ }
141
+ },
142
+ 'Cancel'
143
+ );
144
+ }
145
+ }
146
+
147
+ async function signInWithSavedConfig() {
148
+ authenticationStarted = true; // Mark that auth has started
149
+
150
+ // Show loading overlay
151
+ showLoadingOverlay('Redirecting to login...');
152
+
153
+ try {
154
+ const response = await fetch('/get-oauth-url', { method: 'POST' });
155
+ const result = await response.json();
156
+
157
+ if (response.ok && result.oauthUrl) {
158
+ console.log('🔗 OAuth URL:', result.oauthUrl);
159
+ // Redirect after a brief delay to show loading state
160
+ setTimeout(() => {
161
+ window.location.href = result.oauthUrl;
162
+ }, 500);
163
+ } else {
164
+ hideLoadingOverlay();
165
+ showStatus('❌ ' + (result.error || 'Failed to get OAuth URL'), 'error');
166
+ authenticationStarted = false; // Reset on error
167
+ }
168
+ } catch (error) {
169
+ hideLoadingOverlay();
170
+ showStatus('❌ Error: ' + error.message, 'error');
171
+ authenticationStarted = false; // Reset on error
172
+ }
173
+ }
174
+
175
+ function showStatus(message, type) {
176
+ const statusEl = document.getElementById('status');
177
+ statusEl.textContent = message;
178
+ statusEl.className = 'status ' + type;
179
+ statusEl.style.display = 'block';
180
+ // Auto-hide info and success messages after a delay
181
+ if (type === 'info') {
182
+ setTimeout(() => {
183
+ // Only hide if it's still an info message (not changed to success/error)
184
+ if (statusEl.className === 'status info') {
185
+ statusEl.style.display = 'none';
186
+ }
187
+ }, 3000);
188
+ } else if (type === 'success') {
189
+ setTimeout(() => {
190
+ // Only hide if it's still a success message (not changed to error)
191
+ if (statusEl.className === 'status success') {
192
+ statusEl.style.display = 'none';
193
+ }
194
+ }, 4000);
195
+ }
196
+ }
197
+
198
+ function configValuesEqual(config1, config2) {
199
+ // Compare all fields that matter
200
+ const fieldsToCompare = ['egainUrl', 'authUrl', 'accessTokenUrl', 'clientId', 'redirectUrl', 'clientSecret', 'scopePrefix'];
201
+ for (const field of fieldsToCompare) {
202
+ const val1 = (config1[field] || '').trim();
203
+ const val2 = (config2[field] || '').trim();
204
+ if (val1 !== val2) {
205
+ return false;
206
+ }
207
+ }
208
+ return true;
209
+ }
210
+
211
+ function showLoadingOverlay(message) {
212
+ // Show overlay for form view
213
+ const overlay = document.getElementById('loadingOverlay');
214
+ const loadingMessage = document.getElementById('loadingMessage');
215
+ if (overlay) {
216
+ overlay.classList.add('active');
217
+ if (loadingMessage) {
218
+ loadingMessage.textContent = message || 'Saving configuration...';
219
+ }
220
+ }
221
+
222
+ // Show overlay for quick signin view
223
+ const overlayQuickSignin = document.getElementById('loadingOverlayQuickSignin');
224
+ const loadingMessageQuickSignin = document.getElementById('loadingMessageQuickSignin');
225
+ if (overlayQuickSignin) {
226
+ overlayQuickSignin.classList.add('active');
227
+ if (loadingMessageQuickSignin) {
228
+ loadingMessageQuickSignin.textContent = message || 'Redirecting to login...';
229
+ }
230
+ }
231
+ }
232
+
233
+ function hideLoadingOverlay() {
234
+ // Hide overlay for form view
235
+ const overlay = document.getElementById('loadingOverlay');
236
+ if (overlay) {
237
+ overlay.classList.remove('active');
238
+ }
239
+
240
+ // Hide overlay for quick signin view
241
+ const overlayQuickSignin = document.getElementById('loadingOverlayQuickSignin');
242
+ if (overlayQuickSignin) {
243
+ overlayQuickSignin.classList.remove('active');
244
+ }
245
+ }
246
+
247
+ async function authenticateWithConfig(config) {
248
+ // Prevent duplicate submissions
249
+ if (isSubmitting) {
250
+ return; // Already submitting, ignore
251
+ }
252
+
253
+ // Check if values have changed since last submission
254
+ if (lastSubmittedConfig && configValuesEqual(config, lastSubmittedConfig)) {
255
+ showStatus('⚠️ Configuration unchanged. Already saved.', 'info');
256
+ return; // Values haven't changed, don't submit again
257
+ }
258
+
259
+ try {
260
+ isSubmitting = true; // Mark as submitting
261
+ const submitButton = document.querySelector('button[type="submit"]');
262
+ if (submitButton) {
263
+ submitButton.disabled = true;
264
+ submitButton.textContent = 'Saving...';
265
+ }
266
+
267
+ // Show loading overlay with spinner
268
+ showLoadingOverlay('Saving configuration...');
269
+ authenticationStarted = true; // Mark that auth has started
270
+
271
+ const response = await fetch('/authenticate', {
272
+ method: 'POST',
273
+ headers: { 'Content-Type': 'application/json' },
274
+ body: JSON.stringify(config)
275
+ });
276
+ const result = await response.json();
277
+
278
+ if (response.ok && result.oauthUrl) {
279
+ // Config saved! Store this config as last submitted
280
+ lastSubmittedConfig = { ...config };
281
+
282
+ console.log('🔗 OAuth URL:', result.oauthUrl);
283
+
284
+ // Update loading message (overlay already shows the status, no need for status message)
285
+ showLoadingOverlay('Configuration saved! Redirecting to login...');
286
+
287
+ setTimeout(() => {
288
+ window.location.href = result.oauthUrl;
289
+ }, 500);
290
+ } else if (response.ok && result.success) {
291
+ lastSubmittedConfig = { ...config };
292
+ hideLoadingOverlay();
293
+ showStatus('✅ ' + result.message, 'success');
294
+ setTimeout(() => { window.close(); }, 2000);
295
+ } else {
296
+ hideLoadingOverlay();
297
+ showStatus('❌ ' + (result.error || 'Authentication failed'), 'error');
298
+ authenticationStarted = false; // Reset on error
299
+ isSubmitting = false; // Reset submitting flag
300
+ if (submitButton) {
301
+ submitButton.disabled = false;
302
+ submitButton.textContent = 'Save & Authenticate';
303
+ }
304
+ }
305
+ } catch (error) {
306
+ hideLoadingOverlay();
307
+ showStatus('❌ Error: ' + error.message, 'error');
308
+ authenticationStarted = false; // Reset on error
309
+ isSubmitting = false; // Reset submitting flag
310
+ const submitButton = document.querySelector('button[type="submit"]');
311
+ if (submitButton) {
312
+ submitButton.disabled = false;
313
+ submitButton.textContent = 'Save & Authenticate';
314
+ }
315
+ }
316
+ }
317
+
318
+ document.getElementById('configForm').addEventListener('submit', async (e) => {
319
+ e.preventDefault();
320
+
321
+ // Prevent duplicate submissions
322
+ if (isSubmitting) {
323
+ return;
324
+ }
325
+
326
+ const formData = new FormData(e.target);
327
+ const config = {};
328
+ for (let [key, value] of formData.entries()) {
329
+ config[key] = value;
330
+ }
331
+
332
+ // Config is now sent to backend for secure file storage (not cookies)
333
+ await authenticateWithConfig(config);
334
+ });
335
+
336
+ // Initialize: Load saved config from backend
337
+ (async () => {
338
+ const hasConfig = await loadSavedConfig();
339
+ if (hasConfig) {
340
+ showQuickSignin();
341
+ } else {
342
+ showForm();
343
+ }
344
+ })();
345
+
346
+ // Custom modal functions
347
+ let modalCallback = null;
348
+
349
+ function showModal(title, message, callback, confirmText = 'Confirm') {
350
+ document.getElementById('modalTitle').textContent = title;
351
+ document.getElementById('modalMessage').textContent = message;
352
+ document.getElementById('modalConfirmBtn').textContent = confirmText;
353
+ modalCallback = callback;
354
+ document.getElementById('confirmModal').classList.add('active');
355
+ }
356
+
357
+ function closeModal(confirmed) {
358
+ document.getElementById('confirmModal').classList.remove('active');
359
+ if (modalCallback) {
360
+ modalCallback(confirmed);
361
+ modalCallback = null;
362
+ }
363
+ }
364
+
365
+ // Advanced settings toggle
366
+ function toggleAdvancedSettings() {
367
+ const advancedSection = document.getElementById('advancedSettings');
368
+ const toggleIcon = document.getElementById('advancedToggleIcon');
369
+
370
+ if (advancedSection.style.display === 'none') {
371
+ advancedSection.style.display = 'block';
372
+ toggleIcon.textContent = '▼';
373
+ } else {
374
+ advancedSection.style.display = 'none';
375
+ toggleIcon.textContent = '▶';
376
+ }
377
+ }
378
+
379
+ // Tooltip functions
380
+ function showTooltip(event, fieldName) {
381
+ event.preventDefault(); // Prevent label from focusing input
382
+ event.stopPropagation(); // Prevent event from bubbling
383
+
384
+ const tooltipId = 'tooltip-' + fieldName;
385
+ let tooltipElement = document.getElementById(tooltipId);
386
+ const button = event.currentTarget;
387
+
388
+ if (tooltipElement) {
389
+ // Show the tooltip first to get its dimensions
390
+ tooltipElement.classList.add('active');
391
+
392
+ // Get actual dimensions after showing
393
+ const buttonRect = button.getBoundingClientRect();
394
+ const tooltipRect = tooltipElement.getBoundingClientRect();
395
+ const tooltipWidth = tooltipRect.width || 380;
396
+ const tooltipHeight = tooltipRect.height || 300;
397
+
398
+ const spacing = 16; // Space between button and tooltip
399
+ const viewportPadding = 10; // Padding from viewport edges
400
+ const horizontalComfortZone = 50; // Extra space needed to avoid cramped horizontal positioning
401
+
402
+ // Calculate available space on all sides
403
+ const spaceOnRight = window.innerWidth - buttonRect.right;
404
+ const spaceOnLeft = buttonRect.left;
405
+ const spaceBelow = window.innerHeight - buttonRect.bottom;
406
+ const spaceAbove = buttonRect.top;
407
+
408
+ let left, top;
409
+ let arrowSide = 'left'; // Default: tooltip on right, arrow on left
410
+
411
+ // Check if horizontal positioning would be too cramped (tooltip might cover the icon)
412
+ const horizontalSpaceTight = (spaceOnRight < tooltipWidth + horizontalComfortZone) &&
413
+ (spaceOnLeft < tooltipWidth + horizontalComfortZone);
414
+
415
+ if (horizontalSpaceTight) {
416
+ // Use vertical positioning to avoid covering the icon
417
+ // Determine if we're in the top or bottom half of the viewport
418
+ const inTopHalf = buttonRect.top < window.innerHeight / 2;
419
+
420
+ if (inTopHalf && spaceBelow >= tooltipHeight + spacing + viewportPadding) {
421
+ // Position below
422
+ left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
423
+ top = buttonRect.bottom + spacing;
424
+ arrowSide = 'top';
425
+ } else if (!inTopHalf && spaceAbove >= tooltipHeight + spacing + viewportPadding) {
426
+ // Position above
427
+ left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
428
+ top = buttonRect.top - tooltipHeight - spacing;
429
+ arrowSide = 'bottom';
430
+ } else if (spaceBelow > spaceAbove) {
431
+ // Not enough vertical space either, prefer below
432
+ left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
433
+ top = buttonRect.bottom + spacing;
434
+ arrowSide = 'top';
435
+ } else {
436
+ // Prefer above
437
+ left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
438
+ top = buttonRect.top - tooltipHeight - spacing;
439
+ arrowSide = 'bottom';
440
+ }
441
+
442
+ // Keep horizontally centered within viewport
443
+ if (left < viewportPadding) {
444
+ left = viewportPadding;
445
+ }
446
+ if (left + tooltipWidth > window.innerWidth - viewportPadding) {
447
+ left = window.innerWidth - tooltipWidth - viewportPadding;
448
+ }
449
+
450
+ } else {
451
+ // Use horizontal positioning (original logic)
452
+ // Prefer right side if there's enough space
453
+ if (spaceOnRight >= tooltipWidth + spacing + viewportPadding) {
454
+ // Position to the right
455
+ left = buttonRect.right + spacing;
456
+ arrowSide = 'left';
457
+ } else if (spaceOnLeft >= tooltipWidth + spacing + viewportPadding) {
458
+ // Position to the left
459
+ left = buttonRect.left - tooltipWidth - spacing;
460
+ arrowSide = 'right';
461
+ } else {
462
+ // Not enough space on either side, use the side with more space
463
+ if (spaceOnRight > spaceOnLeft) {
464
+ left = buttonRect.right + spacing;
465
+ arrowSide = 'left';
466
+ // Allow tooltip to go to edge of screen
467
+ if (left + tooltipWidth > window.innerWidth - viewportPadding) {
468
+ left = window.innerWidth - tooltipWidth - viewportPadding;
469
+ }
470
+ } else {
471
+ left = buttonRect.left - tooltipWidth - spacing;
472
+ arrowSide = 'right';
473
+ // Allow tooltip to go to edge of screen
474
+ if (left < viewportPadding) {
475
+ left = viewportPadding;
476
+ }
477
+ }
478
+ }
479
+
480
+ // Center vertically relative to button
481
+ top = buttonRect.top + (buttonRect.height / 2) - (tooltipHeight / 2);
482
+
483
+ // Keep tooltip within viewport vertically
484
+ if (top < viewportPadding) {
485
+ top = viewportPadding;
486
+ }
487
+ if (top + tooltipHeight > window.innerHeight - viewportPadding) {
488
+ top = window.innerHeight - tooltipHeight - viewportPadding;
489
+ }
490
+ }
491
+
492
+ // Apply positioning
493
+ tooltipElement.style.left = left + 'px';
494
+ tooltipElement.style.top = top + 'px';
495
+
496
+ // Update arrow direction
497
+ const arrow = tooltipElement.querySelector('.tooltip-arrow');
498
+ if (arrow) {
499
+ arrow.className = 'tooltip-arrow ' + arrowSide;
500
+ }
501
+ }
502
+ }
503
+
504
+ function hideTooltip(event, fieldName) {
505
+ const tooltipId = 'tooltip-' + fieldName;
506
+ let tooltipElement = document.getElementById(tooltipId);
507
+
508
+ if (tooltipElement) {
509
+ tooltipElement.classList.remove('active');
510
+ }
511
+ }
512
+
513
+ // Close tooltip on ESC key
514
+ document.addEventListener('keydown', function(e) {
515
+ if (e.key === 'Escape') {
516
+ document.querySelectorAll('.tooltip-content').forEach(tip => {
517
+ tip.classList.remove('active');
518
+ });
519
+ }
520
+ });
521
+
522
+ // Notify server if window is closed without starting authentication
523
+ window.addEventListener('beforeunload', function(e) {
524
+ // Only send cancel if user never started the authentication process
525
+ // (If they started auth, they either completed it or clicked cancel explicitly)
526
+ if (!authenticationStarted) {
527
+ // Use sendBeacon for reliable delivery even as page unloads
528
+ navigator.sendBeacon('/cancel', '');
529
+ }
530
+ });
531
+
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { initHooks } from "./registration.js";
6
+ import {
7
+ AfterErrorContext,
8
+ AfterErrorHook,
9
+ AfterSuccessContext,
10
+ AfterSuccessHook,
11
+ BeforeCreateRequestContext,
12
+ BeforeCreateRequestHook,
13
+ BeforeRequestContext,
14
+ BeforeRequestHook,
15
+ Hook,
16
+ Hooks,
17
+ SDKInitHook,
18
+ } from "./types.js";
19
+
20
+ import { SDKOptions } from "../lib/config.js";
21
+ import { RequestInput } from "../lib/http.js";
22
+
23
+ export class SDKHooks implements Hooks {
24
+ sdkInitHooks: SDKInitHook[] = [];
25
+ beforeCreateRequestHooks: BeforeCreateRequestHook[] = [];
26
+ beforeRequestHooks: BeforeRequestHook[] = [];
27
+ afterSuccessHooks: AfterSuccessHook[] = [];
28
+ afterErrorHooks: AfterErrorHook[] = [];
29
+
30
+ constructor() {
31
+ const presetHooks: Array<Hook> = [];
32
+
33
+ for (const hook of presetHooks) {
34
+ if ("sdkInit" in hook) {
35
+ this.registerSDKInitHook(hook);
36
+ }
37
+ if ("beforeCreateRequest" in hook) {
38
+ this.registerBeforeCreateRequestHook(hook);
39
+ }
40
+ if ("beforeRequest" in hook) {
41
+ this.registerBeforeRequestHook(hook);
42
+ }
43
+ if ("afterSuccess" in hook) {
44
+ this.registerAfterSuccessHook(hook);
45
+ }
46
+ if ("afterError" in hook) {
47
+ this.registerAfterErrorHook(hook);
48
+ }
49
+ }
50
+ initHooks(this);
51
+ }
52
+
53
+ registerSDKInitHook(hook: SDKInitHook) {
54
+ this.sdkInitHooks.push(hook);
55
+ }
56
+
57
+ registerBeforeCreateRequestHook(hook: BeforeCreateRequestHook) {
58
+ this.beforeCreateRequestHooks.push(hook);
59
+ }
60
+
61
+ registerBeforeRequestHook(hook: BeforeRequestHook) {
62
+ this.beforeRequestHooks.push(hook);
63
+ }
64
+
65
+ registerAfterSuccessHook(hook: AfterSuccessHook) {
66
+ this.afterSuccessHooks.push(hook);
67
+ }
68
+
69
+ registerAfterErrorHook(hook: AfterErrorHook) {
70
+ this.afterErrorHooks.push(hook);
71
+ }
72
+
73
+ sdkInit(opts: SDKOptions): SDKOptions {
74
+ return this.sdkInitHooks.reduce((opts, hook) => hook.sdkInit(opts), opts);
75
+ }
76
+
77
+ beforeCreateRequest(
78
+ hookCtx: BeforeCreateRequestContext,
79
+ input: RequestInput,
80
+ ): RequestInput {
81
+ let inp = input;
82
+
83
+ for (const hook of this.beforeCreateRequestHooks) {
84
+ inp = hook.beforeCreateRequest(hookCtx, inp);
85
+ }
86
+
87
+ return inp;
88
+ }
89
+
90
+ async beforeRequest(
91
+ hookCtx: BeforeRequestContext,
92
+ request: Request,
93
+ ): Promise<Request> {
94
+ let req = request;
95
+
96
+ for (const hook of this.beforeRequestHooks) {
97
+ req = await hook.beforeRequest(hookCtx, req);
98
+ }
99
+
100
+ return req;
101
+ }
102
+
103
+ async afterSuccess(
104
+ hookCtx: AfterSuccessContext,
105
+ response: Response,
106
+ ): Promise<Response> {
107
+ let res = response;
108
+
109
+ for (const hook of this.afterSuccessHooks) {
110
+ res = await hook.afterSuccess(hookCtx, res);
111
+ }
112
+
113
+ return res;
114
+ }
115
+
116
+ async afterError(
117
+ hookCtx: AfterErrorContext,
118
+ response: Response | null,
119
+ error: unknown,
120
+ ): Promise<{ response: Response | null; error: unknown }> {
121
+ let res = response;
122
+ let err = error;
123
+
124
+ for (const hook of this.afterErrorHooks) {
125
+ const result = await hook.afterError(hookCtx, res, err);
126
+ res = result.response;
127
+ err = result.error;
128
+ }
129
+
130
+ return { response: res, error: err };
131
+ }
132
+ }