@wendongfly/myhi 1.3.34 → 1.3.35
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/dist/admin.html +53 -0
- package/dist/index.js +14 -14
- package/dist/index.min.js +1 -1
- package/package.json +1 -1
package/dist/admin.html
CHANGED
|
@@ -116,6 +116,22 @@
|
|
|
116
116
|
<div class="msg" id="pwd-msg"></div>
|
|
117
117
|
</div>
|
|
118
118
|
|
|
119
|
+
<!-- 大模型网关 -->
|
|
120
|
+
<div class="card">
|
|
121
|
+
<h3>大模型网关</h3>
|
|
122
|
+
<div style="font-size:0.75rem;color:#6e7681;margin-bottom:0.6rem;line-height:1.5">
|
|
123
|
+
配置后新建的 Claude 会话自动注入 <code style="background:#161b22;padding:0.1em 0.3em;border-radius:3px">ANTHROPIC_BASE_URL</code> / <code style="background:#161b22;padding:0.1em 0.3em;border-radius:3px">ANTHROPIC_API_KEY</code>
|
|
124
|
+
</div>
|
|
125
|
+
<div class="inp-row">
|
|
126
|
+
<input type="text" class="inp" id="gw-url" placeholder="网关 URL(如 https://gateway.example.com)">
|
|
127
|
+
</div>
|
|
128
|
+
<div class="inp-row" style="margin-top:0.4rem">
|
|
129
|
+
<input type="password" class="inp" id="gw-key" placeholder="Token / API Key(留空保持不变)">
|
|
130
|
+
<button class="btn-sm" onclick="saveGateway()">保存</button>
|
|
131
|
+
</div>
|
|
132
|
+
<div class="msg" id="gw-msg"></div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
119
135
|
<div class="uptime" id="uptime"></div>
|
|
120
136
|
</div>
|
|
121
137
|
|
|
@@ -147,6 +163,43 @@ async function showAdmin() {
|
|
|
147
163
|
document.getElementById('pg-admin').style.display = '';
|
|
148
164
|
await refresh();
|
|
149
165
|
setInterval(refresh, 10000);
|
|
166
|
+
loadGateway();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async function loadGateway() {
|
|
170
|
+
try {
|
|
171
|
+
const r = await fetch('/api/gateway', { headers: H() });
|
|
172
|
+
if (!r.ok) return;
|
|
173
|
+
const d = await r.json();
|
|
174
|
+
document.getElementById('gw-url').value = d.baseUrl || '';
|
|
175
|
+
document.getElementById('gw-key').placeholder = d.hasKey ? `已设置(${d.apiKey}),留空保持不变` : 'Token / API Key';
|
|
176
|
+
} catch {}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
async function saveGateway() {
|
|
180
|
+
const baseUrl = document.getElementById('gw-url').value.trim();
|
|
181
|
+
const apiKey = document.getElementById('gw-key').value.trim();
|
|
182
|
+
const msg = document.getElementById('gw-msg');
|
|
183
|
+
try {
|
|
184
|
+
const r = await fetch('/api/gateway', {
|
|
185
|
+
method: 'POST',
|
|
186
|
+
headers: H(),
|
|
187
|
+
body: JSON.stringify({ baseUrl, apiKey }),
|
|
188
|
+
});
|
|
189
|
+
const d = await r.json();
|
|
190
|
+
if (d.ok) {
|
|
191
|
+
msg.className = 'msg msg-ok';
|
|
192
|
+
msg.textContent = '已保存,新建 Claude 会话自动生效';
|
|
193
|
+
document.getElementById('gw-key').value = '';
|
|
194
|
+
loadGateway();
|
|
195
|
+
} else {
|
|
196
|
+
msg.className = 'msg msg-err';
|
|
197
|
+
msg.textContent = d.error || '失败';
|
|
198
|
+
}
|
|
199
|
+
} catch {
|
|
200
|
+
msg.className = 'msg msg-err';
|
|
201
|
+
msg.textContent = '连接失败';
|
|
202
|
+
}
|
|
150
203
|
}
|
|
151
204
|
|
|
152
205
|
async function refresh() {
|