@egain/egain-mcp-server 1.0.20 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/mcp-server.js +294 -114
- package/bin/mcp-server.js.map +40 -34
- package/esm/src/funcs/queryAnswers.d.ts +7 -3
- package/esm/src/funcs/queryAnswers.d.ts.map +1 -1
- package/esm/src/funcs/queryAnswers.js +9 -7
- package/esm/src/funcs/queryAnswers.js.map +1 -1
- package/esm/src/funcs/queryRetrieve.d.ts +2 -2
- package/esm/src/funcs/queryRetrieve.d.ts.map +1 -1
- package/esm/src/funcs/queryRetrieve.js +4 -10
- package/esm/src/funcs/queryRetrieve.js.map +1 -1
- package/esm/src/funcs/querySearch.d.ts +3 -3
- package/esm/src/funcs/querySearch.d.ts.map +1 -1
- package/esm/src/funcs/querySearch.js +9 -3
- package/esm/src/funcs/querySearch.js.map +1 -1
- package/esm/src/hooks/server-routing-hook.js +2 -2
- package/esm/src/hooks/server-routing-hook.js.map +1 -1
- package/esm/src/lib/config.d.ts +2 -2
- package/esm/src/lib/config.js +2 -2
- package/esm/src/mcp-server/mcp-server.js +1 -1
- package/esm/src/mcp-server/server.js +4 -4
- package/esm/src/mcp-server/server.js.map +1 -1
- package/esm/src/mcp-server/tools/queryAnswers.d.ts +1 -1
- package/esm/src/mcp-server/tools/queryAnswers.d.ts.map +1 -1
- package/esm/src/mcp-server/tools/queryAnswers.js +7 -3
- package/esm/src/mcp-server/tools/queryAnswers.js.map +1 -1
- package/esm/src/mcp-server/tools/queryRetrieve.d.ts +1 -1
- package/esm/src/mcp-server/tools/queryRetrieve.js +2 -2
- package/esm/src/mcp-server/tools/queryRetrieve.js.map +1 -1
- package/esm/src/mcp-server/tools/querySearch.js +1 -1
- package/esm/src/models/additionalsnippets.d.ts +2 -1
- package/esm/src/models/additionalsnippets.d.ts.map +1 -1
- package/esm/src/models/additionalsnippets.js +2 -1
- package/esm/src/models/additionalsnippets.js.map +1 -1
- package/esm/src/models/aisearchop.d.ts +8 -4
- package/esm/src/models/aisearchop.d.ts.map +1 -1
- package/esm/src/models/aisearchop.js +16 -6
- package/esm/src/models/aisearchop.js.map +1 -1
- package/esm/src/models/aisearchresponse.d.ts +16 -0
- package/esm/src/models/aisearchresponse.d.ts.map +1 -0
- package/esm/src/models/aisearchresponse.js +14 -0
- package/esm/src/models/aisearchresponse.js.map +1 -0
- package/esm/src/models/aispaginationinfo.d.ts +10 -0
- package/esm/src/models/aispaginationinfo.d.ts.map +1 -0
- package/esm/src/models/aispaginationinfo.js +12 -0
- package/esm/src/models/aispaginationinfo.js.map +1 -0
- package/esm/src/models/aitopicbreadcrumb.d.ts +10 -0
- package/esm/src/models/aitopicbreadcrumb.d.ts.map +1 -0
- package/esm/src/models/aitopicbreadcrumb.js +9 -0
- package/esm/src/models/aitopicbreadcrumb.js.map +1 -0
- package/esm/src/models/aitopicsummary.d.ts +10 -0
- package/esm/src/models/aitopicsummary.d.ts.map +1 -0
- package/esm/src/models/aitopicsummary.js +9 -0
- package/esm/src/models/aitopicsummary.js.map +1 -0
- package/esm/src/models/answersrequest.d.ts +22 -11
- package/esm/src/models/answersrequest.d.ts.map +1 -1
- package/esm/src/models/answersrequest.js +22 -10
- package/esm/src/models/answersrequest.js.map +1 -1
- package/esm/src/models/answersresponse.d.ts +3 -2
- package/esm/src/models/answersresponse.d.ts.map +1 -1
- package/esm/src/models/answersresponse.js +2 -1
- package/esm/src/models/answersresponse.js.map +1 -1
- package/esm/src/models/article.d.ts +1 -1
- package/esm/src/models/article.d.ts.map +1 -1
- package/esm/src/models/articleaisearchresult.d.ts +58 -0
- package/esm/src/models/articleaisearchresult.d.ts.map +1 -0
- package/esm/src/models/articleaisearchresult.js +63 -0
- package/esm/src/models/articleaisearchresult.js.map +1 -0
- package/esm/src/models/articletype.d.ts +1 -1
- package/esm/src/models/articletype.d.ts.map +1 -1
- package/esm/src/models/articletype.js +1 -0
- package/esm/src/models/articletype.js.map +1 -1
- package/esm/src/models/createsuggestion.d.ts +1 -1
- package/esm/src/models/createsuggestion.d.ts.map +1 -1
- package/esm/src/models/createsuggestion.js +13 -1
- package/esm/src/models/createsuggestion.js.map +1 -1
- package/esm/src/models/getbestanswerop.d.ts +24 -0
- package/esm/src/models/getbestanswerop.d.ts.map +1 -0
- package/esm/src/models/getbestanswerop.js +30 -0
- package/esm/src/models/getbestanswerop.js.map +1 -0
- package/esm/src/models/languagecodeparameter.d.ts +1 -1
- package/esm/src/models/languagecodeparameter.d.ts.map +1 -1
- package/esm/src/models/languagecodeparameter.js +11 -0
- package/esm/src/models/languagecodeparameter.js.map +1 -1
- package/esm/src/models/languagequeryparameter.d.ts +1 -1
- package/esm/src/models/languagequeryparameter.d.ts.map +1 -1
- package/esm/src/models/languagequeryparameter.js +11 -0
- package/esm/src/models/languagequeryparameter.js.map +1 -1
- package/esm/src/models/mandatorylanguagequeryparameter.d.ts +1 -1
- package/esm/src/models/mandatorylanguagequeryparameter.d.ts.map +1 -1
- package/esm/src/models/mandatorylanguagequeryparameter.js +12 -0
- package/esm/src/models/mandatorylanguagequeryparameter.js.map +1 -1
- package/esm/src/models/referenceresponse.d.ts +2 -2
- package/esm/src/models/referenceresponse.d.ts.map +1 -1
- package/esm/src/models/referenceresponse.js +2 -2
- package/esm/src/models/referenceresponse.js.map +1 -1
- package/esm/src/models/requiredlanguagecode.d.ts +7 -0
- package/esm/src/models/requiredlanguagecode.d.ts.map +1 -0
- package/esm/src/models/requiredlanguagecode.js +41 -0
- package/esm/src/models/requiredlanguagecode.js.map +1 -0
- package/esm/src/models/retrievechunksop.d.ts +24 -0
- package/esm/src/models/retrievechunksop.d.ts.map +1 -0
- package/esm/src/models/retrievechunksop.js +30 -0
- package/esm/src/models/retrievechunksop.js.map +1 -0
- package/esm/src/models/retrieverequest.d.ts +1 -0
- package/esm/src/models/retrieverequest.d.ts.map +1 -1
- package/esm/src/models/retrieverequest.js +1 -0
- package/esm/src/models/retrieverequest.js.map +1 -1
- package/esm/src/models/retrieveresponse.d.ts +2 -1
- package/esm/src/models/retrieveresponse.d.ts.map +1 -1
- package/esm/src/models/retrieveresponse.js +2 -1
- package/esm/src/models/retrieveresponse.js.map +1 -1
- package/esm/src/models/schemastags.d.ts +7 -0
- package/esm/src/models/schemastags.d.ts.map +1 -0
- package/esm/src/models/schemastags.js +9 -0
- package/esm/src/models/schemastags.js.map +1 -0
- package/esm/src/models/searchresult.d.ts +6 -4
- package/esm/src/models/searchresult.d.ts.map +1 -1
- package/esm/src/models/searchresult.js +7 -5
- package/esm/src/models/searchresult.js.map +1 -1
- package/esm/src/models/tags.d.ts +2 -2
- package/esm/src/models/tags.d.ts.map +1 -1
- package/esm/src/models/tags.js +2 -2
- package/esm/src/models/tags.js.map +1 -1
- package/esm/src/models/topicsummary.d.ts +2 -0
- package/esm/src/models/topicsummary.d.ts.map +1 -1
- package/esm/src/models/topicsummary.js +2 -0
- package/esm/src/models/topicsummary.js.map +1 -1
- package/esm/src/models/wserrorcommon.d.ts +1 -1
- package/esm/src/models/wserrorcommon.d.ts.map +1 -1
- package/esm/src/models/wserrorcommon.js +1 -1
- package/esm/src/models/wserrorcommon.js.map +1 -1
- package/manifest.json +12 -12
- package/package.json +1 -1
- package/src/funcs/queryAnswers.ts +20 -18
- package/src/funcs/queryRetrieve.ts +15 -21
- package/src/funcs/querySearch.ts +16 -9
- package/src/hooks/auth-pages/browser-error.html +282 -0
- package/src/hooks/auth-pages/config-page.html +490 -0
- package/src/hooks/img/accesstoken-tooltip.png +0 -0
- package/src/hooks/img/apidomain-tooltip.png +0 -0
- package/src/hooks/img/authurl-tooltip.png +0 -0
- package/src/hooks/img/clientid-tooltip.png +0 -0
- package/src/hooks/img/clientsecret-tooltip.png +0 -0
- package/src/hooks/img/env-tooltip.png +0 -0
- package/src/hooks/img/redirect-tooltip.png +0 -0
- package/src/hooks/img/scopeprefix-tooltip.png +0 -0
- package/src/hooks/server-routing-hook.ts +2 -2
- package/src/lib/config.ts +2 -2
- package/src/mcp-server/mcp-server.ts +1 -1
- package/src/mcp-server/server.ts +4 -4
- package/src/mcp-server/tools/queryAnswers.ts +7 -3
- package/src/mcp-server/tools/queryRetrieve.ts +2 -2
- package/src/mcp-server/tools/querySearch.ts +1 -1
- package/src/models/additionalsnippets.ts +4 -2
- package/src/models/aisearchop.ts +33 -9
- package/src/models/aisearchresponse.ts +42 -0
- package/src/models/aispaginationinfo.ts +24 -0
- package/src/models/aitopicbreadcrumb.ts +21 -0
- package/src/models/aitopicsummary.ts +24 -0
- package/src/models/answersrequest.ts +42 -23
- package/src/models/answersresponse.ts +5 -3
- package/src/models/article.ts +1 -1
- package/src/models/{articlesearchresult.ts → articleaisearchresult.ts} +39 -37
- package/src/models/articletype.ts +1 -0
- package/src/models/createsuggestion.ts +13 -1
- package/src/models/{postportalidanswersop.ts → getbestanswerop.ts} +19 -12
- package/src/models/languagecodeparameter.ts +11 -0
- package/src/models/languagequeryparameter.ts +11 -0
- package/src/models/mandatorylanguagequeryparameter.ts +12 -0
- package/src/models/referenceresponse.ts +5 -5
- package/src/models/requiredlanguagecode.ts +48 -0
- package/src/models/{postportalidretrieveop.ts → retrievechunksop.ts} +19 -15
- package/src/models/retrieverequest.ts +2 -0
- package/src/models/retrieveresponse.ts +4 -2
- package/src/models/schemastags.ts +19 -0
- package/src/models/searchresult.ts +13 -9
- package/src/models/tag.ts +12 -0
- package/src/models/tags.ts +3 -6
- package/src/models/topicsummary.ts +3 -0
- package/src/models/wserrorcommon.ts +2 -2
- package/src/models/searchresponse.ts +0 -34
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Browser Compatibility Issue - eGain MCP</title>
|
|
7
|
+
<style>
|
|
8
|
+
* {
|
|
9
|
+
margin: 0;
|
|
10
|
+
padding: 0;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
body {
|
|
15
|
+
font-family: "Open Sans", "Segoe UI", "SegoeUI", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
|
|
16
|
+
background: #fef1fd;
|
|
17
|
+
min-height: 100vh;
|
|
18
|
+
display: flex;
|
|
19
|
+
justify-content: center;
|
|
20
|
+
align-items: center;
|
|
21
|
+
padding: 20px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.container {
|
|
25
|
+
background: white;
|
|
26
|
+
border-radius: 16px;
|
|
27
|
+
box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.12);
|
|
28
|
+
max-width: 600px;
|
|
29
|
+
width: 100%;
|
|
30
|
+
padding: 32px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.warning-icon {
|
|
34
|
+
font-size: 64px;
|
|
35
|
+
margin-bottom: 20px;
|
|
36
|
+
text-align: center;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
h1 {
|
|
40
|
+
color: #e74c3c;
|
|
41
|
+
font-size: 28px;
|
|
42
|
+
margin-bottom: 20px;
|
|
43
|
+
font-weight: 600;
|
|
44
|
+
text-align: center;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.error-details {
|
|
48
|
+
background: #fff0f6;
|
|
49
|
+
border-left: 4px solid #d946a6;
|
|
50
|
+
padding: 20px;
|
|
51
|
+
margin: 20px 0;
|
|
52
|
+
border-radius: 4px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.error-details strong {
|
|
56
|
+
color: #a21361;
|
|
57
|
+
display: block;
|
|
58
|
+
margin-bottom: 12px;
|
|
59
|
+
font-size: 16px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.error-details p {
|
|
63
|
+
color: #a21361;
|
|
64
|
+
font-size: 14px;
|
|
65
|
+
line-height: 1.6;
|
|
66
|
+
margin-bottom: 12px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.solution {
|
|
70
|
+
background: #f0f9ff;
|
|
71
|
+
border-left: 4px solid #3b82f6;
|
|
72
|
+
padding: 20px;
|
|
73
|
+
margin: 20px 0;
|
|
74
|
+
border-radius: 4px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.solution strong {
|
|
78
|
+
color: #1e40af;
|
|
79
|
+
display: block;
|
|
80
|
+
margin-bottom: 12px;
|
|
81
|
+
font-size: 16px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.solution p {
|
|
85
|
+
color: #1e40af;
|
|
86
|
+
font-size: 14px;
|
|
87
|
+
line-height: 1.6;
|
|
88
|
+
margin-bottom: 12px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.solution ol {
|
|
92
|
+
color: #1e40af;
|
|
93
|
+
font-size: 14px;
|
|
94
|
+
line-height: 1.8;
|
|
95
|
+
margin-left: 20px;
|
|
96
|
+
margin-top: 8px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.solution ul {
|
|
100
|
+
color: #1e40af;
|
|
101
|
+
font-size: 14px;
|
|
102
|
+
line-height: 1.8;
|
|
103
|
+
margin-left: 20px;
|
|
104
|
+
margin-top: 8px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.solution code {
|
|
108
|
+
background: rgba(59, 130, 246, 0.1);
|
|
109
|
+
padding: 2px 6px;
|
|
110
|
+
border-radius: 3px;
|
|
111
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
112
|
+
font-size: 13px;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.button-group {
|
|
116
|
+
display: flex;
|
|
117
|
+
gap: 10px;
|
|
118
|
+
margin-top: 30px;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
button {
|
|
123
|
+
padding: 12px 24px;
|
|
124
|
+
border: 2px solid transparent;
|
|
125
|
+
border-radius: 8px;
|
|
126
|
+
font-size: 15px;
|
|
127
|
+
font-weight: 600;
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
transition: all 0.2s;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.btn-primary {
|
|
133
|
+
background: linear-gradient(135deg, #b91d8f 0%, #7a1460 100%);
|
|
134
|
+
color: white;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.btn-primary:hover {
|
|
138
|
+
transform: translateY(-2px);
|
|
139
|
+
box-shadow: 0 6px 20px rgba(185, 29, 143, 0.4);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.btn-secondary {
|
|
143
|
+
background: #f6f8fa;
|
|
144
|
+
color: #666;
|
|
145
|
+
border: 2px solid #e1e4e8;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.btn-secondary:hover {
|
|
149
|
+
background: #e1e4e8;
|
|
150
|
+
}
|
|
151
|
+
</style>
|
|
152
|
+
</head>
|
|
153
|
+
<body>
|
|
154
|
+
<div class="container">
|
|
155
|
+
<div class="warning-icon">⚠️</div>
|
|
156
|
+
<h1 id="pageTitle">Browser Compatibility Issue</h1>
|
|
157
|
+
|
|
158
|
+
<div class="error-details">
|
|
159
|
+
<strong>What happened?</strong>
|
|
160
|
+
<p id="errorMessage">We're having trouble with browser compatibility. This prevents authentication from completing.</p>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<!-- Safari Not Supported -->
|
|
164
|
+
<div class="solution" id="safariSolution" style="display: none;">
|
|
165
|
+
<strong>Safari Not Supported:</strong>
|
|
166
|
+
<p style="margin-bottom: 12px;">
|
|
167
|
+
Safari doesn't support private browsing mode via command line, which is required to protect your OAuth credentials from being cached or leaked. <strong>Safari cannot be used for authentication with this MCP server.</strong>
|
|
168
|
+
</p>
|
|
169
|
+
<ol>
|
|
170
|
+
<li><strong>Please use Chrome, Edge, Brave, Opera, or Vivaldi instead</strong></li>
|
|
171
|
+
<li><strong>Close this Safari window</strong></li>
|
|
172
|
+
<li><strong>Reattempt query/authentication</strong></li>
|
|
173
|
+
</ol>
|
|
174
|
+
<p style="margin-top: 12px; font-size: 13px; color: #666;">
|
|
175
|
+
<strong>Why?</strong> We prioritize your security over convenience. Private browsing mode is required to protect your OAuth credentials, and Safari doesn't support this via command line.
|
|
176
|
+
</p>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<!-- Firefox Not Supported -->
|
|
180
|
+
<div class="solution" id="firefoxSolution" style="display: none;">
|
|
181
|
+
<strong>Firefox Not Supported:</strong>
|
|
182
|
+
<p style="margin-bottom: 12px;">
|
|
183
|
+
Firefox does not support AppleScript automation for reading page URLs, which is required to detect when authentication completes. <strong>Firefox cannot be used for authentication with this MCP server.</strong>
|
|
184
|
+
</p>
|
|
185
|
+
<ol>
|
|
186
|
+
<li><strong>Please use Chrome, Edge, Brave, Opera, or Vivaldi instead</strong></li>
|
|
187
|
+
<li><strong>Close this Firefox window</strong></li>
|
|
188
|
+
<li><strong>Reattempt query/authentication</strong></li>
|
|
189
|
+
</ol>
|
|
190
|
+
<p style="margin-top: 12px; font-size: 13px; color: #666;">
|
|
191
|
+
<strong>Why?</strong> The OAuth redirect goes to an external URL (not localhost). The MCP server needs to monitor the browser URL to detect when the authorization code appears. Firefox doesn't support this automation, so authentication cannot complete.
|
|
192
|
+
</p>
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<!-- Chrome about:blank Issue -->
|
|
196
|
+
<div class="solution" id="chromeSolution" style="display: none;">
|
|
197
|
+
<strong>Solution for Chrome:</strong>
|
|
198
|
+
<ol>
|
|
199
|
+
<li><strong>Fully quit Chrome</strong> (not just close windows):
|
|
200
|
+
<ul>
|
|
201
|
+
<li>macOS: Chrome menu → Quit Chrome, or press <code>Cmd+Q</code></li>
|
|
202
|
+
<li>Windows: Right-click Chrome in taskbar → Close window, or press <code>Alt+F4</code></li>
|
|
203
|
+
</ul>
|
|
204
|
+
</li>
|
|
205
|
+
<li>Wait a few seconds for Chrome to fully close</li>
|
|
206
|
+
<li>Reopen Chrome</li>
|
|
207
|
+
<li>Click "Try Again" below to restart authentication</li>
|
|
208
|
+
</ol>
|
|
209
|
+
<p style="margin-top: 12px; font-size: 13px; color: #666;">
|
|
210
|
+
<strong>Why?</strong> Chrome sometimes enters a state where it reports "about:blank" instead of the actual page URL. Restarting Chrome resolves this.
|
|
211
|
+
</p>
|
|
212
|
+
</div>
|
|
213
|
+
|
|
214
|
+
<!-- Other Browser Monitoring Errors -->
|
|
215
|
+
<div class="solution" id="monitoringSolution" style="display: none;">
|
|
216
|
+
<strong>Browser Monitoring Issue:</strong>
|
|
217
|
+
<p style="margin-bottom: 12px;">
|
|
218
|
+
We cannot read the current page URL from your browser. This is usually due to missing macOS Automation permissions.
|
|
219
|
+
</p>
|
|
220
|
+
<ol>
|
|
221
|
+
<li><strong>Check macOS Automation permissions:</strong>
|
|
222
|
+
<ul>
|
|
223
|
+
<li>Go to System Settings → Privacy & Security → Automation</li>
|
|
224
|
+
<li>Find your MCP client (Claude Desktop, Cursor, Terminal, etc.)</li>
|
|
225
|
+
<li>Ensure your browser is enabled for automation</li>
|
|
226
|
+
</ul>
|
|
227
|
+
</li>
|
|
228
|
+
<li>If your browser is not listed, try triggering authentication once to prompt macOS to ask for permission</li>
|
|
229
|
+
<li>Click "Try Again" below to restart authentication</li>
|
|
230
|
+
</ol>
|
|
231
|
+
<p style="margin-top: 12px; font-size: 13px; color: #666;">
|
|
232
|
+
<strong>Why?</strong> Browser automation permissions are required to allow scripts to read the current page URL and detect when authentication completes.
|
|
233
|
+
</p>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
<div class="button-group">
|
|
237
|
+
<button class="btn-secondary" onclick="window.close()">Close</button>
|
|
238
|
+
<button class="btn-primary" onclick="retryAuthentication()">Try Again</button>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
<script>
|
|
243
|
+
// Detect browser and error type, show appropriate solution
|
|
244
|
+
const userAgent = navigator.userAgent.toLowerCase();
|
|
245
|
+
const errorType = new URLSearchParams(window.location.search).get('type') || 'unknown';
|
|
246
|
+
const browserName = new URLSearchParams(window.location.search).get('browser') || '';
|
|
247
|
+
const browserLower = browserName.toLowerCase();
|
|
248
|
+
|
|
249
|
+
// Determine which solution to show
|
|
250
|
+
if (browserLower.includes('safari') || errorType === 'notsupported') {
|
|
251
|
+
// Safari not supported
|
|
252
|
+
document.getElementById('pageTitle').textContent = 'Safari Not Supported';
|
|
253
|
+
document.getElementById('safariSolution').style.display = 'block';
|
|
254
|
+
document.getElementById('errorMessage').textContent =
|
|
255
|
+
'Safari doesn\'t support private browsing mode via command line, which is required to protect your OAuth credentials. Safari cannot be used for authentication.';
|
|
256
|
+
} else if (browserLower.includes('firefox') || errorType === 'monitoring') {
|
|
257
|
+
// Firefox not supported
|
|
258
|
+
document.getElementById('pageTitle').textContent = 'Firefox Not Supported';
|
|
259
|
+
document.getElementById('firefoxSolution').style.display = 'block';
|
|
260
|
+
document.getElementById('errorMessage').textContent =
|
|
261
|
+
'Firefox does not support AppleScript automation for reading page URLs, which is required to detect when authentication completes. Firefox cannot be used for authentication.';
|
|
262
|
+
} else if (errorType === 'aboutblank' || (browserLower.includes('chrome') && errorType !== 'monitoring')) {
|
|
263
|
+
// Chrome about:blank issue
|
|
264
|
+
document.getElementById('pageTitle').textContent = 'Chrome Browser Issue';
|
|
265
|
+
document.getElementById('chromeSolution').style.display = 'block';
|
|
266
|
+
document.getElementById('errorMessage').textContent =
|
|
267
|
+
'Chrome is reporting "about:blank" instead of the actual page URL. This prevents us from detecting when authentication completes.';
|
|
268
|
+
} else {
|
|
269
|
+
// Other monitoring errors (permissions, etc.)
|
|
270
|
+
document.getElementById('pageTitle').textContent = 'Browser Monitoring Issue';
|
|
271
|
+
document.getElementById('monitoringSolution').style.display = 'block';
|
|
272
|
+
document.getElementById('errorMessage').textContent =
|
|
273
|
+
'We cannot read the current page URL from your browser. This is usually due to missing macOS Automation permissions or a browser compatibility issue.';
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
function retryAuthentication() {
|
|
277
|
+
// Redirect back to config page to restart authentication
|
|
278
|
+
window.location.href = '/config';
|
|
279
|
+
}
|
|
280
|
+
</script>
|
|
281
|
+
</body>
|
|
282
|
+
</html>
|