@mrrlin-dev/external-agents 0.2.2 → 0.2.4
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/agents.yaml +15 -0
- package/package.json +1 -1
- package/ui.js +37 -23
package/agents.yaml
CHANGED
|
@@ -372,3 +372,18 @@ agents:
|
|
|
372
372
|
usage_url: "https://console.anthropic.com/settings/usage"
|
|
373
373
|
transports:
|
|
374
374
|
edit_exists: "claude --print"
|
|
375
|
+
|
|
376
|
+
# Weak-tier Sonnet — same Claude subscription, cheaper model. Included in
|
|
377
|
+
# default `pick_agents` runs (weak filter passes it), so `dispatch` /
|
|
378
|
+
# `/consensus` terminal-picks and the atomic-executor workload can route to
|
|
379
|
+
# Claude via subscription without burning Opus tokens.
|
|
380
|
+
- id: claude-sonnet
|
|
381
|
+
provider: anthropic
|
|
382
|
+
model: claude-sonnet-5
|
|
383
|
+
tier: weak
|
|
384
|
+
tags: [quick]
|
|
385
|
+
auth: "cli:claude"
|
|
386
|
+
preference_order: 20
|
|
387
|
+
usage_url: "https://console.anthropic.com/settings/usage"
|
|
388
|
+
transports:
|
|
389
|
+
edit_exists: "claude --print --model claude-sonnet-5"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrrlin-dev/external-agents",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "One MCP server for every LLM you talk to — direct-API dispatcher across Gemini, DeepSeek, Groq, OpenRouter, Cerebras, and more. Part of mrrlin.com.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "server.js",
|
package/ui.js
CHANGED
|
@@ -34,7 +34,7 @@ function saveKeysFile(kv) {
|
|
|
34
34
|
fs.renameSync(tmp, KEYS_FILE);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
// Resolve agents.yaml relative to this file so
|
|
37
|
+
// Resolve agents.yaml relative to this file so 'external-agents ui' works from
|
|
38
38
|
// any cwd (previously the "./agents.yaml" relative path only worked from the
|
|
39
39
|
// package root).
|
|
40
40
|
const __ui_dir = path.dirname(new URL(import.meta.url).pathname);
|
|
@@ -177,7 +177,7 @@ const PAGE = `<!doctype html>
|
|
|
177
177
|
|
|
178
178
|
<div style="margin-top: 32px; padding: 16px; background: #fff; border: 1px dashed #ccc; border-radius: 4px;">
|
|
179
179
|
<h3 style="margin: 0 0 4px 0; font-size: 15px;">Missing your model?</h3>
|
|
180
|
-
<p style="margin: 0 0 12px 0; color: #666; font-size: 13px;">Suggest a new model or provider
|
|
180
|
+
<p style="margin: 0 0 12px 0; color: #666; font-size: 13px;">Suggest a new model or provider — opens a pre-filled issue on the public tracker at <a href="https://github.com/mrrlin-dev/external-agents/issues" target="_blank" rel="noopener noreferrer">mrrlin-dev/external-agents</a> (also logged locally).</p>
|
|
181
181
|
<div style="display: flex; gap: 8px; align-items: center; flex-wrap: wrap;">
|
|
182
182
|
<input id="suggest-name" placeholder="Model or provider name (e.g. anthropic/haiku-4-5)" style="flex: 1; min-width: 260px; padding: 6px 10px; border: 1px solid #ccc; border-radius: 4px; font: inherit;">
|
|
183
183
|
<input id="suggest-url" placeholder="Docs / setup URL (optional)" style="flex: 1; min-width: 260px; padding: 6px 10px; border: 1px solid #ccc; border-radius: 4px; font: inherit;">
|
|
@@ -221,28 +221,42 @@ async function submitSuggest() {
|
|
|
221
221
|
const url = document.getElementById("suggest-url").value.trim();
|
|
222
222
|
const out = document.getElementById("suggest-result");
|
|
223
223
|
if (!name) { out.textContent = "please enter a model or provider name"; out.style.color = "#a33"; return; }
|
|
224
|
-
out.textContent = "
|
|
224
|
+
out.textContent = "opening GitHub issue…";
|
|
225
225
|
out.style.color = "#666";
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
226
|
+
|
|
227
|
+
// 1) Fire-and-forget local JSONL record so 'external-agents ui' still has an
|
|
228
|
+
// audit trail even if the user cancels the GitHub tab.
|
|
229
|
+
fetch("/api/suggest", {
|
|
230
|
+
method: "POST",
|
|
231
|
+
headers: { "Content-Type": "application/json" },
|
|
232
|
+
body: JSON.stringify({ name, url }),
|
|
233
|
+
}).catch(() => { /* non-blocking; the public issue below is the real submit */ });
|
|
234
|
+
|
|
235
|
+
// 2) Public path — open a pre-filled New Issue on the external-agents repo.
|
|
236
|
+
// The registry maintainer picks it up from the public tracker; anyone else
|
|
237
|
+
// watching the repo can see it too, so proposals are discoverable, not stuck
|
|
238
|
+
// in a private JSONL.
|
|
239
|
+
const body = [
|
|
240
|
+
"**Model / provider:** " + name,
|
|
241
|
+
"",
|
|
242
|
+
url ? "**Docs / setup URL:** " + url : "**Docs / setup URL:** _(none provided)_",
|
|
243
|
+
"",
|
|
244
|
+
"---",
|
|
245
|
+
"_Submitted via 'external-agents ui' — the local dashboard's \"Missing your model?\" form._",
|
|
246
|
+
].join("\n");
|
|
247
|
+
const issueUrl =
|
|
248
|
+
"https://github.com/mrrlin-dev/external-agents/issues/new?" +
|
|
249
|
+
"labels=missing-model" +
|
|
250
|
+
"&title=" + encodeURIComponent("Add " + name) +
|
|
251
|
+
"&body=" + encodeURIComponent(body);
|
|
252
|
+
window.open(issueUrl, "_blank", "noopener,noreferrer");
|
|
253
|
+
|
|
254
|
+
out.innerHTML = "opened a pre-filled GitHub issue in a new tab — " +
|
|
255
|
+
"just click <b>Submit new issue</b> there. " +
|
|
256
|
+
'(also logged locally as backup)';
|
|
257
|
+
out.style.color = "#4a8";
|
|
258
|
+
document.getElementById("suggest-name").value = "";
|
|
259
|
+
document.getElementById("suggest-url").value = "";
|
|
246
260
|
}
|
|
247
261
|
// Per-provider signup metadata for the unlock banner. Only providers whose
|
|
248
262
|
// entries carry the "free" tag AND may show up in needs_auth appear here.
|