@rynfar/meridian 1.45.4 → 1.47.0
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/README.md +10 -1
- package/dist/{cli-nb2xe1wm.js → cli-1v1narm9.js} +135 -11
- package/dist/{cli-7bygmvmv.js → cli-q6dz9r5p.js} +1 -1
- package/dist/cli.js +3 -3
- package/dist/{profileCli-mm8yxb2j.js → profileCli-fbhe9p5z.js} +1 -1
- package/dist/{profilePage-k0faye28.js → profilePage-txxpbc44.js} +1 -0
- package/dist/proxy/models.d.ts.map +1 -1
- package/dist/proxy/query.d.ts.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/telemetry/dashboard.d.ts.map +1 -1
- package/dist/telemetry/profileUsage.d.ts +29 -0
- package/dist/telemetry/profileUsage.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,7 +109,7 @@ Then in `~/.config/opencode/opencode.json`:
|
|
|
109
109
|
|
|
110
110
|
# home-manager config
|
|
111
111
|
{
|
|
112
|
-
imports = [ meridian.
|
|
112
|
+
imports = [ meridian.homeModules.default ];
|
|
113
113
|
|
|
114
114
|
services.meridian = {
|
|
115
115
|
enable = true;
|
|
@@ -130,6 +130,12 @@ Then in `~/.config/opencode/opencode.json`:
|
|
|
130
130
|
|
|
131
131
|
The service starts automatically on login. Manage it with `systemctl --user {start,stop,restart,status} meridian`.
|
|
132
132
|
|
|
133
|
+
The module manages only the systemd user service — it does **not** put the `meridian` CLI on your `$PATH`. If you also want to run `meridian` from a shell, add the package yourself:
|
|
134
|
+
|
|
135
|
+
```nix
|
|
136
|
+
home.packages = [ config.services.meridian.package ];
|
|
137
|
+
```
|
|
138
|
+
|
|
133
139
|
The plugin path is also available as `config.services.meridian.opencode.pluginPath` for use in your OpenCode config:
|
|
134
140
|
|
|
135
141
|
```nix
|
|
@@ -683,6 +689,7 @@ ANTHROPIC_API_KEY=your-secret-key ANTHROPIC_BASE_URL=http://meridian-host:3456 o
|
|
|
683
689
|
| `MERIDIAN_TELEMETRY_SIZE` | `CLAUDE_PROXY_TELEMETRY_SIZE` | `1000` | Telemetry ring buffer size |
|
|
684
690
|
| `MERIDIAN_NO_FILE_CHANGES` | `CLAUDE_PROXY_NO_FILE_CHANGES` | unset | Disable "Files changed" summary in responses |
|
|
685
691
|
| `MERIDIAN_SONNET_MODEL` | `CLAUDE_PROXY_SONNET_MODEL` | `sonnet` | Sonnet context tier: `sonnet` (200k, default) or `sonnet[1m]` (1M, requires Extra Usage†) |
|
|
692
|
+
| `MERIDIAN_1M_CONTEXT_SUPPORT` | `CLAUDE_PROXY_1M_CONTEXT_SUPPORT` | unset | Set to `0`/`false`/`no` to disable 1M context entirely — every model resolves to its 200k base variant, so Meridian never requests the extended window (avoids Extra Usage on 1M). |
|
|
686
693
|
| `MERIDIAN_DEFAULT_AGENT` | — | `opencode` | Default adapter for unrecognized agents: `opencode`, `forgecode`, `pi`, `crush`, `droid`, `passthrough`. Requires restart. |
|
|
687
694
|
| `MERIDIAN_PROFILES` | — | unset | JSON array of profile configs (overrides disk discovery). See [Multi-Profile Support](#multi-profile-support). |
|
|
688
695
|
| `MERIDIAN_DEFER_TOOL_THRESHOLD` | — | `15` | Number of tools before non-core tools are deferred via ToolSearch. Set to `0` to disable. |
|
|
@@ -908,6 +915,8 @@ This keeps the SDK's preset prompt and tool bridge, but removes the external cli
|
|
|
908
915
|
**I'm hitting rate limits on 1M context. What do I do?**
|
|
909
916
|
Meridian defaults Sonnet to 200k context because Sonnet 1M is always billed as Extra Usage on Max plans — even when regular usage isn't exhausted. This is [Anthropic's intended billing model](https://code.claude.com/docs/en/model-config#extended-context), not a bug. Set `MERIDIAN_SONNET_MODEL=sonnet[1m]` to opt in if you have Extra Usage enabled and understand the billing implications. Opus defaults to 1M context, which is included with Max/Team/Enterprise subscriptions at no extra cost. Note: there is a [known upstream bug](https://github.com/anthropics/claude-code/issues/39841) where Claude Code incorrectly gates Opus 1M behind Extra Usage on Max — this is Anthropic's to fix.
|
|
910
917
|
|
|
918
|
+
To turn off 1M context entirely for **every** model (so Meridian never requests the extended window), set `MERIDIAN_1M_CONTEXT_SUPPORT=0`. Meridian also auto-detects the "out of extra usage" error, falls back to the 200k model, and skips 1M for an hour — so it self-heals after the first occurrence even without the env var.
|
|
919
|
+
|
|
911
920
|
**Why does the health endpoint show `"plugin": "not-configured"`?**
|
|
912
921
|
You haven't run `meridian setup`. Without the plugin, OpenCode requests won't have session tracking or subagent model selection. Run `meridian setup` and restart OpenCode.
|
|
913
922
|
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
resolvePassthrough,
|
|
36
36
|
resolveSdkModelDefaults,
|
|
37
37
|
stripExtendedContext
|
|
38
|
-
} from "./cli-
|
|
38
|
+
} from "./cli-q6dz9r5p.js";
|
|
39
39
|
import {
|
|
40
40
|
checkPluginConfigured
|
|
41
41
|
} from "./cli-je60fevk.js";
|
|
@@ -8641,6 +8641,27 @@ var dashboardHtml = `<!DOCTYPE html>
|
|
|
8641
8641
|
transition: all 0.15s; }
|
|
8642
8642
|
.log-filter:hover { border-color: var(--accent); color: var(--text); }
|
|
8643
8643
|
.log-filter.active { background: rgba(88,166,255,0.1); border-color: var(--accent); color: var(--accent); }
|
|
8644
|
+
|
|
8645
|
+
/* Usage tab */
|
|
8646
|
+
.usage-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; margin-bottom: 16px; }
|
|
8647
|
+
.ucard { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 16px 18px; }
|
|
8648
|
+
.ucard-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
|
|
8649
|
+
.ucard-title { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }
|
|
8650
|
+
.ucard-reset { font-size: 11px; color: var(--muted); white-space: nowrap; }
|
|
8651
|
+
.ucard-pct { font-size: 32px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1.1; margin-top: 8px; color: var(--green); }
|
|
8652
|
+
.ucard.warn .ucard-pct { color: var(--yellow); }
|
|
8653
|
+
.ucard.high .ucard-pct { color: var(--red); }
|
|
8654
|
+
.ucard-sub { font-size: 12px; color: var(--muted); margin-top: 8px; min-height: 16px; }
|
|
8655
|
+
.ubar { position: relative; height: 8px; border-radius: 4px; background: var(--border); overflow: visible; margin-top: 12px; }
|
|
8656
|
+
.ubar-fill { height: 100%; border-radius: 4px; background: var(--green); transition: width 0.4s ease; max-width: 100%; }
|
|
8657
|
+
.ucard.warn .ubar-fill { background: var(--yellow); }
|
|
8658
|
+
.ucard.high .ubar-fill { background: var(--red); }
|
|
8659
|
+
.ubar-marker { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--text); opacity: 0.55; border-radius: 1px; }
|
|
8660
|
+
.pace-pill { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; }
|
|
8661
|
+
.pace-pill.on, .pace-pill.under { background: rgba(63,185,80,0.15); color: var(--green); }
|
|
8662
|
+
.pace-pill.ahead { background: rgba(210,153,34,0.18); color: var(--yellow); }
|
|
8663
|
+
.pace-pill.over { background: rgba(248,81,73,0.15); color: var(--red); }
|
|
8664
|
+
.usage-note { font-size: 11px; color: var(--muted); }
|
|
8644
8665
|
` + profileBarCss + `
|
|
8645
8666
|
</style>
|
|
8646
8667
|
</head>
|
|
@@ -8713,20 +8734,22 @@ function setLogFilter(filter) {
|
|
|
8713
8734
|
async function refresh() {
|
|
8714
8735
|
const w = $('#window').value;
|
|
8715
8736
|
try {
|
|
8716
|
-
const [summary, reqs, logs] = await Promise.all([
|
|
8737
|
+
const [summary, reqs, logs, quota] = await Promise.all([
|
|
8717
8738
|
fetch('/telemetry/summary?window=' + w).then(r => r.json()),
|
|
8718
8739
|
fetch('/telemetry/requests?limit=50&since=' + (Date.now() - Number(w))).then(r => r.json()),
|
|
8719
8740
|
fetch('/telemetry/logs?limit=200&since=' + (Date.now() - Number(w))).then(r => r.json()),
|
|
8741
|
+
fetch('/v1/usage/quota').then(r => r.json()).catch(() => null),
|
|
8720
8742
|
]);
|
|
8721
|
-
render(summary, reqs, logs);
|
|
8743
|
+
render(summary, reqs, logs, quota);
|
|
8722
8744
|
$('#lastUpdate').textContent = 'Updated ' + new Date().toLocaleTimeString();
|
|
8723
8745
|
} catch (e) {
|
|
8724
8746
|
$('#content').innerHTML = '<div class="empty">Failed to load telemetry</div>';
|
|
8725
8747
|
}
|
|
8726
8748
|
}
|
|
8727
8749
|
|
|
8728
|
-
function render(s, reqs, logs) {
|
|
8729
|
-
|
|
8750
|
+
function render(s, reqs, logs, quota) {
|
|
8751
|
+
const hasUsage = quota && quota.buckets && quota.buckets.some(b => b.utilization != null);
|
|
8752
|
+
if (s.totalRequests === 0 && (!logs || logs.length === 0) && !hasUsage) {
|
|
8730
8753
|
$('#content').innerHTML = '<div class="empty">No requests recorded yet. Send a request through the proxy to see telemetry.</div>';
|
|
8731
8754
|
return;
|
|
8732
8755
|
}
|
|
@@ -8744,6 +8767,7 @@ function render(s, reqs, logs) {
|
|
|
8744
8767
|
+ 'Requests<span class="tab-badge">' + reqs.length + '</span></div>'
|
|
8745
8768
|
+ '<div class="tab' + (activeTab === 'logs' ? ' active' : '') + '" data-tab="logs" onclick="switchTab('logs')">'
|
|
8746
8769
|
+ 'Logs<span class="tab-badge">' + logs.length + '</span></div>'
|
|
8770
|
+
+ '<div class="tab' + (activeTab === 'usage' ? ' active' : '') + '" data-tab="usage" onclick="switchTab('usage')">Usage</div>'
|
|
8747
8771
|
+ '</div>';
|
|
8748
8772
|
|
|
8749
8773
|
// ==================== Overview tab ====================
|
|
@@ -8893,6 +8917,11 @@ function render(s, reqs, logs) {
|
|
|
8893
8917
|
}
|
|
8894
8918
|
html += '</div>'; // end logs panel
|
|
8895
8919
|
|
|
8920
|
+
// ==================== Usage tab ====================
|
|
8921
|
+
html += '<div id="panel-usage" class="tab-panel' + (activeTab === 'usage' ? ' active' : '') + '">';
|
|
8922
|
+
html += renderUsage(quota);
|
|
8923
|
+
html += '</div>'; // end usage panel
|
|
8924
|
+
|
|
8896
8925
|
$('#content').innerHTML = html;
|
|
8897
8926
|
}
|
|
8898
8927
|
|
|
@@ -8903,6 +8932,101 @@ function card(label, value, detail) {
|
|
|
8903
8932
|
+ '</div>';
|
|
8904
8933
|
}
|
|
8905
8934
|
|
|
8935
|
+
// ---- Usage tab helpers (mirror src/telemetry/profileUsage.ts; unit-tested there) ----
|
|
8936
|
+
function classifyUtil(u) {
|
|
8937
|
+
if (u == null || !isFinite(u)) return '';
|
|
8938
|
+
if (u >= 0.85) return 'high';
|
|
8939
|
+
if (u >= 0.6) return 'warn';
|
|
8940
|
+
return '';
|
|
8941
|
+
}
|
|
8942
|
+
function resetIn(resetsAt) {
|
|
8943
|
+
if (resetsAt == null || !isFinite(resetsAt)) return '';
|
|
8944
|
+
var ms = resetsAt - Date.now();
|
|
8945
|
+
if (ms <= 0) return 'resetting…';
|
|
8946
|
+
var m = Math.floor(ms / 60000);
|
|
8947
|
+
if (m < 60) return 'resets in ' + Math.max(1, m) + 'm';
|
|
8948
|
+
var h = Math.floor(m / 60), rm = m % 60;
|
|
8949
|
+
if (h < 24) return 'resets in ' + h + 'h' + (rm ? ' ' + rm + 'm' : '');
|
|
8950
|
+
var d = Math.floor(h / 24), rh = h % 24;
|
|
8951
|
+
return 'resets in ' + d + 'd' + (rh ? ' ' + rh + 'h' : '');
|
|
8952
|
+
}
|
|
8953
|
+
function pct(u) { return Math.round(Math.max(0, u) * 100); }
|
|
8954
|
+
|
|
8955
|
+
function usageCard(title, bucket) {
|
|
8956
|
+
if (!bucket || bucket.utilization == null) {
|
|
8957
|
+
return '<div class="ucard"><div class="ucard-head"><span class="ucard-title">' + title + '</span></div>'
|
|
8958
|
+
+ '<div class="ucard-pct" style="color:var(--muted)">—</div>'
|
|
8959
|
+
+ '<div class="ucard-sub">No data yet</div></div>';
|
|
8960
|
+
}
|
|
8961
|
+
var u = bucket.utilization;
|
|
8962
|
+
var cls = classifyUtil(u);
|
|
8963
|
+
var fill = Math.min(100, pct(u));
|
|
8964
|
+
return '<div class="ucard ' + cls + '">'
|
|
8965
|
+
+ '<div class="ucard-head"><span class="ucard-title">' + title + '</span>'
|
|
8966
|
+
+ '<span class="ucard-reset">' + resetIn(bucket.resetsAt) + '</span></div>'
|
|
8967
|
+
+ '<div class="ucard-pct">' + pct(u) + '<span style="font-size:16px;font-weight:500;color:var(--muted)">%</span></div>'
|
|
8968
|
+
+ '<div class="ubar"><div class="ubar-fill" style="width:' + fill + '%"></div></div>'
|
|
8969
|
+
+ '<div class="ucard-sub">of your ' + title.split('·')[1].trim() + ' allowance used</div>'
|
|
8970
|
+
+ '</div>';
|
|
8971
|
+
}
|
|
8972
|
+
|
|
8973
|
+
// Weekly pace: actual vs. expected (even) consumption at this point in the 7-day window.
|
|
8974
|
+
function paceCard(weekly) {
|
|
8975
|
+
if (!weekly || weekly.utilization == null || weekly.resetsAt == null) {
|
|
8976
|
+
return '<div class="ucard"><div class="ucard-head"><span class="ucard-title">Weekly Pace</span></div>'
|
|
8977
|
+
+ '<div class="ucard-pct" style="color:var(--muted)">—</div>'
|
|
8978
|
+
+ '<div class="ucard-sub">Needs weekly usage data</div></div>';
|
|
8979
|
+
}
|
|
8980
|
+
var WEEK = 7 * 86400000;
|
|
8981
|
+
var start = weekly.resetsAt - WEEK;
|
|
8982
|
+
var elapsed = Math.max(0, Math.min(1, (Date.now() - start) / WEEK));
|
|
8983
|
+
var actual = pct(weekly.utilization);
|
|
8984
|
+
var expected = Math.round(elapsed * 100);
|
|
8985
|
+
var delta = actual - expected;
|
|
8986
|
+
var projected = elapsed >= 0.1 ? Math.round((Math.max(0, weekly.utilization) / elapsed) * 100) : null;
|
|
8987
|
+
|
|
8988
|
+
var pill, label;
|
|
8989
|
+
if (delta > 7) { pill = 'ahead'; label = '+' + delta + '% ahead of pace'; }
|
|
8990
|
+
else if (delta < -7) { pill = 'under'; label = Math.abs(delta) + '% under pace'; }
|
|
8991
|
+
else { pill = 'on'; label = 'On pace'; }
|
|
8992
|
+
if (projected != null && projected >= 100) { pill = 'over'; label = 'On track to run out'; }
|
|
8993
|
+
|
|
8994
|
+
var fill = Math.min(100, actual);
|
|
8995
|
+
var mark = Math.min(100, expected);
|
|
8996
|
+
var proj = projected == null ? '—' : projected + '%';
|
|
8997
|
+
return '<div class="ucard">'
|
|
8998
|
+
+ '<div class="ucard-head"><span class="ucard-title">Weekly Pace</span>'
|
|
8999
|
+
+ '<span class="ucard-reset">' + Math.round(elapsed * 100) + '% through week</span></div>'
|
|
9000
|
+
+ '<div style="margin-top:8px"><span class="pace-pill ' + pill + '">' + label + '</span></div>'
|
|
9001
|
+
+ '<div class="ubar"><div class="ubar-fill" style="width:' + fill + '%;background:' + (pill === 'over' ? 'var(--red)' : pill === 'ahead' ? 'var(--yellow)' : 'var(--green)') + '"></div>'
|
|
9002
|
+
+ '<div class="ubar-marker" style="left:' + mark + '%" title="Expected at even pace"></div></div>'
|
|
9003
|
+
+ '<div class="ucard-sub">' + actual + '% used vs ' + expected + '% expected · at this rate ~' + proj + ' by reset</div>'
|
|
9004
|
+
+ '</div>';
|
|
9005
|
+
}
|
|
9006
|
+
|
|
9007
|
+
function renderUsage(quota) {
|
|
9008
|
+
if (!quota || !quota.buckets) {
|
|
9009
|
+
return '<div class="empty">Usage data unavailable.</div>';
|
|
9010
|
+
}
|
|
9011
|
+
var by = {};
|
|
9012
|
+
quota.buckets.forEach(function (b) { by[b.type] = b; });
|
|
9013
|
+
var session = by['five_hour'], weekly = by['seven_day'];
|
|
9014
|
+
if ((!session || session.utilization == null) && (!weekly || weekly.utilization == null)) {
|
|
9015
|
+
return '<div class="empty">No usage data yet — Anthropic reports it after your first request through Meridian.</div>';
|
|
9016
|
+
}
|
|
9017
|
+
var h = '<div class="usage-cards">'
|
|
9018
|
+
+ usageCard('Session · 5h', session)
|
|
9019
|
+
+ usageCard('Weekly · 7d', weekly)
|
|
9020
|
+
+ paceCard(weekly)
|
|
9021
|
+
+ '</div>';
|
|
9022
|
+
var asOf = quota.asOf ? new Date(quota.asOf).toLocaleTimeString() : '';
|
|
9023
|
+
h += '<div class="usage-note">'
|
|
9024
|
+
+ (quota.profile ? 'Profile: ' + quota.profile + ' · ' : '')
|
|
9025
|
+
+ 'Reported by Anthropic' + (asOf ? ' · as of ' + asOf : '')
|
|
9026
|
+
+ '</div>';
|
|
9027
|
+
return h;
|
|
9028
|
+
}
|
|
9029
|
+
|
|
8906
9030
|
$('#autoRefresh').addEventListener('change', function() {
|
|
8907
9031
|
clearInterval(timer);
|
|
8908
9032
|
if (this.checked) timer = setInterval(refresh, 5000);
|
|
@@ -16743,9 +16867,9 @@ function stripConfigDir(env2) {
|
|
|
16743
16867
|
delete out.CLAUDE_CONFIG_DIR;
|
|
16744
16868
|
return out;
|
|
16745
16869
|
}
|
|
16746
|
-
function computePassthroughMaxTurns(
|
|
16747
|
-
const
|
|
16748
|
-
const defaultBase =
|
|
16870
|
+
function computePassthroughMaxTurns(hasDeferredTools, advisorModel) {
|
|
16871
|
+
const deferredBump = hasDeferredTools ? 1 : 0;
|
|
16872
|
+
const defaultBase = 3 + deferredBump;
|
|
16749
16873
|
const configured = envInt("PASSTHROUGH_MAX_TURNS", defaultBase);
|
|
16750
16874
|
const base = configured > 0 ? configured : defaultBase;
|
|
16751
16875
|
const advisorBump = advisorModel ? 3 : 0;
|
|
@@ -16823,7 +16947,7 @@ function buildQueryOptions(ctx, abortController) {
|
|
|
16823
16947
|
prompt,
|
|
16824
16948
|
options: {
|
|
16825
16949
|
executable: "node",
|
|
16826
|
-
maxTurns: passthrough ? computePassthroughMaxTurns(
|
|
16950
|
+
maxTurns: passthrough ? computePassthroughMaxTurns(hasDeferredTools, ctx.advisorModel) : 200,
|
|
16827
16951
|
cwd: workingDirectory,
|
|
16828
16952
|
model,
|
|
16829
16953
|
pathToClaudeCodeExecutable: claudeExecutable,
|
|
@@ -18091,7 +18215,7 @@ function createProxyServer(config = {}) {
|
|
|
18091
18215
|
const requestSource = c.req.header("x-meridian-source")?.slice(0, 64) || undefined;
|
|
18092
18216
|
const requestedModel = typeof body.model === "string" ? body.model : "sonnet";
|
|
18093
18217
|
let model = mapModelToClaudeModel(requestedModel, authStatus?.subscriptionType, agentMode);
|
|
18094
|
-
const envOverrides = requestedModel.startsWith("claude-opus-") ? { ANTHROPIC_DEFAULT_OPUS_MODEL: requestedModel } : requestedModel.startsWith("claude-fable-") ? { ANTHROPIC_DEFAULT_FABLE_MODEL: requestedModel } : requestedModel.startsWith("claude-sonnet-") ? { ANTHROPIC_DEFAULT_SONNET_MODEL: requestedModel } : requestedModel.startsWith("claude-haiku-") ? { ANTHROPIC_DEFAULT_HAIKU_MODEL: requestedModel } : undefined;
|
|
18218
|
+
const envOverrides = requestedModel.startsWith("claude-opus-") ? { ANTHROPIC_DEFAULT_OPUS_MODEL: requestedModel } : requestedModel.startsWith("claude-fable-") ? { ANTHROPIC_DEFAULT_FABLE_MODEL: requestedModel } : requestedModel.startsWith("claude-mythos-") ? { ANTHROPIC_DEFAULT_FABLE_MODEL: requestedModel } : requestedModel.startsWith("claude-sonnet-") ? { ANTHROPIC_DEFAULT_SONNET_MODEL: requestedModel } : requestedModel.startsWith("claude-haiku-") ? { ANTHROPIC_DEFAULT_HAIKU_MODEL: requestedModel } : undefined;
|
|
18095
18219
|
const cwdResolution = resolveSdkWorkingDirectory({
|
|
18096
18220
|
envOverride: process.env.MERIDIAN_WORKDIR ?? process.env.CLAUDE_PROXY_WORKDIR,
|
|
18097
18221
|
adapterCwd: adapter.extractWorkingDirectory(body),
|
|
@@ -19970,7 +20094,7 @@ data: ${JSON.stringify({
|
|
|
19970
20094
|
});
|
|
19971
20095
|
});
|
|
19972
20096
|
app.get("/profiles", async (c) => {
|
|
19973
|
-
const { profilePageHtml } = await import("./profilePage-
|
|
20097
|
+
const { profilePageHtml } = await import("./profilePage-txxpbc44.js");
|
|
19974
20098
|
return c.html(profilePageHtml);
|
|
19975
20099
|
});
|
|
19976
20100
|
app.post("/profiles/active", async (c) => {
|
|
@@ -63,7 +63,7 @@ function mapModelToClaudeModel(model, subscriptionType, agentMode) {
|
|
|
63
63
|
return "haiku";
|
|
64
64
|
const use1m = supports1mContext(model);
|
|
65
65
|
const isSubagent = agentMode === "subagent";
|
|
66
|
-
if (model.includes("fable")) {
|
|
66
|
+
if (model.includes("fable") || model.includes("mythos")) {
|
|
67
67
|
if (use1m && !isSubagent && !isExtendedContextKnownUnavailable())
|
|
68
68
|
return "fable[1m]";
|
|
69
69
|
return "fable";
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
startProxyServer
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-1v1narm9.js";
|
|
5
5
|
import"./cli-cx463q74.js";
|
|
6
6
|
import"./cli-sry5aqdj.js";
|
|
7
7
|
import"./cli-4rqtm83g.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveClaudeExecutableAsync
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-q6dz9r5p.js";
|
|
11
11
|
import"./cli-340h1chz.js";
|
|
12
12
|
import"./cli-je60fevk.js";
|
|
13
13
|
import"./cli-aq5zz92m.js";
|
|
@@ -53,7 +53,7 @@ See https://github.com/rynfar/meridian for full documentation.`);
|
|
|
53
53
|
process.exit(0);
|
|
54
54
|
}
|
|
55
55
|
if (args[0] === "profile") {
|
|
56
|
-
const { profileAdd, profileAddOauthToken, profileList, profileRemove, profileSwitch, profileLogin, profileHelp } = await import("./profileCli-
|
|
56
|
+
const { profileAdd, profileAddOauthToken, profileList, profileRemove, profileSwitch, profileLogin, profileHelp } = await import("./profileCli-fbhe9p5z.js");
|
|
57
57
|
const subcommand = args[1];
|
|
58
58
|
const profileId = args[2];
|
|
59
59
|
const headless = args.includes("--headless");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/proxy/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAA;AAEzG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AACrD,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AACrD,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AACzD,eAAO,MAAM,qBAAqB,qBAAqB,CAAA;AAEvD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AA+BD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/proxy/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/proxy/query.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/proxy/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAGvD,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAkCnG,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EAEpB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAA+B,iBAAiB,EAAE,mBAAmB,EAAsC,MAAM,iBAAiB,CAAA;AAGzI,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,CAAA;AA2Q7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/proxy/server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAGvD,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAkCnG,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EAEpB,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAA+B,iBAAiB,EAAE,mBAAmB,EAAsC,MAAM,iBAAiB,CAAA;AAGzI,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,CAAA;AA2Q7B,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAkiGhF;AAWD,wBAAgB,gCAAgC,IAAI,IAAI,CAavD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmGhG"}
|
package/dist/server.js
CHANGED
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
runObserveHook,
|
|
12
12
|
runTransformHook,
|
|
13
13
|
startProxyServer
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-1v1narm9.js";
|
|
15
15
|
import"./cli-cx463q74.js";
|
|
16
16
|
import"./cli-sry5aqdj.js";
|
|
17
17
|
import"./cli-4rqtm83g.js";
|
|
18
|
-
import"./cli-
|
|
18
|
+
import"./cli-q6dz9r5p.js";
|
|
19
19
|
import"./cli-340h1chz.js";
|
|
20
20
|
import"./cli-je60fevk.js";
|
|
21
21
|
import"./cli-aq5zz92m.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/telemetry/dashboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/telemetry/dashboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,aAAa,QAsdlB,CAAA"}
|
|
@@ -54,4 +54,33 @@ export declare function formatExtraUsage(eu: {
|
|
|
54
54
|
utilization: number | null;
|
|
55
55
|
currency: string;
|
|
56
56
|
} | null | undefined): ExtraUsageDisplay | null;
|
|
57
|
+
/**
|
|
58
|
+
* Weekly-pace comparison for the 7-day usage window.
|
|
59
|
+
*
|
|
60
|
+
* Compares how much of the weekly allowance has been consumed against how much
|
|
61
|
+
* *time* has elapsed in the window — the "am I burning it too fast?" question.
|
|
62
|
+
* The window resets at `resetsAt` and started 7 days earlier, so the elapsed
|
|
63
|
+
* fraction gives the expected (even-pace) utilization.
|
|
64
|
+
*
|
|
65
|
+
* Returns null when there isn't enough data to compute a meaningful pace
|
|
66
|
+
* (missing utilization or reset time) — callers should hide the widget then.
|
|
67
|
+
*
|
|
68
|
+
* `now` is injectable for tests; production callers omit it.
|
|
69
|
+
*/
|
|
70
|
+
export interface WeeklyPace {
|
|
71
|
+
/** Actual utilization, rounded to a percent (may exceed 100). */
|
|
72
|
+
actualPct: number;
|
|
73
|
+
/** Expected utilization at this point in the window, 0..100. */
|
|
74
|
+
expectedPct: number;
|
|
75
|
+
/** actualPct − expectedPct; positive means ahead of (faster than) pace. */
|
|
76
|
+
deltaPct: number;
|
|
77
|
+
/** Extrapolated end-of-window utilization at the current rate; null if it's
|
|
78
|
+
* too early in the window to project without wild swings. */
|
|
79
|
+
projectedPct: number | null;
|
|
80
|
+
/** Consumption relative to even pace. */
|
|
81
|
+
status: "under" | "on" | "ahead";
|
|
82
|
+
/** Position in the window, 0..1 (fraction of the 7 days elapsed). */
|
|
83
|
+
elapsedFraction: number;
|
|
84
|
+
}
|
|
85
|
+
export declare function computeWeeklyPace(utilization: number | null | undefined, resetsAt: number | null | undefined, now?: number): WeeklyPace | null;
|
|
57
86
|
//# sourceMappingURL=profileUsage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileUsage.d.ts","sourceRoot":"","sources":["../../src/telemetry/profileUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQhD,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAChD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAKvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAY1G;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;CACpB;AACD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAiB9C"}
|
|
1
|
+
{"version":3,"file":"profileUsage.d.ts","sourceRoot":"","sources":["../../src/telemetry/profileUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQhD,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAChD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAKvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAY1G;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;CACpB;AACD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAiB9C;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAA;IAChB;kEAC8D;IAC9D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,yCAAyC;IACzC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAA;IAChC,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAA;CACxB;AAQD,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,GAAG,GAAE,MAAmB,GACvB,UAAU,GAAG,IAAI,CAoBnB"}
|
package/package.json
CHANGED