aweshare 0.6.0 → 0.6.2

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.
@@ -240,10 +240,16 @@ export interface UsageFilter {
240
240
  limit: number;
241
241
  }
242
242
  export declare function queryUsage(db: Database.Database, filter: UsageFilter): UsageEventRow[];
243
+ /** Summary row orders: time = most recently used first (the default);
244
+ * consumer/producer/model = that column ascending, newest first within it;
245
+ * tokens/requests = busiest first (tokens is the pre-0.6.1 default order). */
246
+ export type UsageSort = 'time' | 'consumer' | 'producer' | 'model' | 'tokens' | 'requests';
243
247
  export interface UsageSummaryFilter {
244
248
  /** consumer-alias: one row per consumer × alias (the CLI's default);
245
249
  * consumer: one row per producer × consumer; alias: one row per alias. */
246
250
  group: 'consumer-alias' | 'consumer' | 'alias';
251
+ /** Row order; defaults to 'time' (most recently used first). */
252
+ sort?: UsageSort;
247
253
  consumerId?: number;
248
254
  producerId?: number;
249
255
  alias?: string;
@@ -261,16 +267,23 @@ export type UsageSummaryRow = {
261
267
  errors: number;
262
268
  prompt_tokens: number;
263
269
  completion_tokens: number;
270
+ /** prompt + completion; NULL counts (streaming backends) read as 0. */
271
+ tokens: number;
264
272
  /** Requests whose token counts the upstream never reported (streaming
265
273
  * backends) — excluded from the token sums, never counted as zero cost. */
266
274
  unknown_tokens: number;
267
275
  avg_duration_ms: number;
268
276
  last_at: string;
277
+ /** Event id of the group's most recent request — the order tiebreak. */
278
+ last_id: number;
269
279
  };
270
280
  /** Server-side aggregation: who consumed how much — one row per consumer ×
271
- * alias (default), per producer × consumer, or per alias. Busiest first;
272
- * in the consumer-alias view a person's rows stay together, ordered by the
273
- * person's total consumption, then by each model's tokens within it. */
281
+ * alias (default), per producer × consumer, or per alias. Rows come back
282
+ * most recently used first (sort 'time', the default); 'consumer',
283
+ * 'producer' and 'model' sort by that column ascending with newest first
284
+ * inside it, 'tokens'/'requests' busiest first. In the consumer-alias view
285
+ * the tokens sort keeps a person's rows together, persons ranked by their
286
+ * total consumption, then each model's tokens within the person. */
274
287
  export declare function summarizeUsage(db: Database.Database, filter: UsageSummaryFilter): UsageSummaryRow[];
275
288
  export declare function getConsumerConfig(db: Database.Database, consumerId: number): string | null;
276
289
  export declare function setConsumerConfig(db: Database.Database, consumerId: number, config: string | null): void;
@@ -679,9 +679,12 @@ export function queryUsage(db, filter) {
679
679
  return db.prepare(sql).all(params);
680
680
  }
681
681
  /** Server-side aggregation: who consumed how much — one row per consumer ×
682
- * alias (default), per producer × consumer, or per alias. Busiest first;
683
- * in the consumer-alias view a person's rows stay together, ordered by the
684
- * person's total consumption, then by each model's tokens within it. */
682
+ * alias (default), per producer × consumer, or per alias. Rows come back
683
+ * most recently used first (sort 'time', the default); 'consumer',
684
+ * 'producer' and 'model' sort by that column ascending with newest first
685
+ * inside it, 'tokens'/'requests' busiest first. In the consumer-alias view
686
+ * the tokens sort keeps a person's rows together, persons ranked by their
687
+ * total consumption, then each model's tokens within the person. */
685
688
  export function summarizeUsage(db, filter) {
686
689
  const { where, params } = usageWhere(filter);
687
690
  const select = filter.group === 'alias'
@@ -694,24 +697,43 @@ export function summarizeUsage(db, filter) {
694
697
  : filter.group === 'consumer'
695
698
  ? 'u.producer_id, p.name, u.consumer_id, c.name'
696
699
  : 'u.producer_id, p.name, u.consumer_id, c.name, u.alias';
697
- // window sum keeps a person's rows together, persons ordered by their total
698
- const personFirst = filter.group === 'consumer-alias'
699
- ? 'SUM(COALESCE(u.prompt_tokens, 0) + COALESCE(u.completion_tokens, 0)) OVER (PARTITION BY u.consumer_id) DESC, '
700
- : '';
701
- const sql = `SELECT p.name AS producer_name, ${select},
700
+ // every non-busiest order ends newest-first; last_id (the group's latest
701
+ // event id) breaks the same-millisecond ties a test seed (or a fast hub)
702
+ // produces
703
+ const recency = 'last_at DESC, last_id DESC';
704
+ const sort = filter.sort ?? 'time';
705
+ const orderBy = {
706
+ time: recency,
707
+ consumer: `consumer_name COLLATE NOCASE ASC, ${recency}`,
708
+ producer: `producer_name COLLATE NOCASE ASC, consumer_name COLLATE NOCASE ASC, ${recency}`,
709
+ model: `alias COLLATE NOCASE ASC, ${recency}`,
710
+ tokens: 'tokens DESC, requests DESC, last_at DESC',
711
+ requests: `requests DESC, ${recency}`,
712
+ };
713
+ const base = `SELECT p.name AS producer_name, ${select},
702
714
  COUNT(*) AS requests,
703
715
  SUM(CASE WHEN u.error_code IS NOT NULL OR (u.status IS NOT NULL AND u.status >= 400) THEN 1 ELSE 0 END) AS errors,
704
716
  SUM(COALESCE(u.prompt_tokens, 0)) AS prompt_tokens,
705
717
  SUM(COALESCE(u.completion_tokens, 0)) AS completion_tokens,
718
+ SUM(COALESCE(u.prompt_tokens, 0)) + SUM(COALESCE(u.completion_tokens, 0)) AS tokens,
706
719
  SUM(CASE WHEN u.prompt_tokens IS NULL AND u.completion_tokens IS NULL THEN 1 ELSE 0 END) AS unknown_tokens,
707
720
  CAST(AVG(u.duration_ms) AS INTEGER) AS avg_duration_ms,
708
- MAX(u.at) AS last_at
721
+ MAX(u.at) AS last_at,
722
+ MAX(u.id) AS last_id
709
723
  FROM usage_events u
710
724
  LEFT JOIN producers p ON p.id = u.producer_id
711
725
  LEFT JOIN consumers c ON c.id = u.consumer_id
712
726
  ${where.length ? `WHERE ${where.join(' AND ')}` : ''}
713
- GROUP BY ${groupBy}
714
- ORDER BY ${personFirst}SUM(COALESCE(u.prompt_tokens, 0)) + SUM(COALESCE(u.completion_tokens, 0)) DESC, requests DESC, last_at DESC`;
727
+ GROUP BY ${groupBy}`;
728
+ // "a person's rows stay together" ranks people by their total tokens. The
729
+ // window must run over the GROUPED rows: over the raw events the argument
730
+ // is a bare column, which in an aggregate samples one arbitrary event per
731
+ // group and silently flips the order — so this one sort wraps the query.
732
+ const sql = sort === 'tokens' && filter.group === 'consumer-alias'
733
+ ? `SELECT * FROM (${base})
734
+ ORDER BY SUM(tokens) OVER (PARTITION BY consumer_id) DESC, tokens DESC, requests DESC, last_at DESC`
735
+ : `SELECT * FROM (${base})
736
+ ORDER BY ${orderBy[sort]}`;
715
737
  return db.prepare(sql).all(params);
716
738
  }
717
739
  // ---- per-consumer limit overrides (sparse JSON in consumers.config) ----
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Router } from './http.js';
2
+ /**
3
+ * The hub's front door. Browsers hitting GET / used to get a bare JSON 404 —
4
+ * to anyone holding an invite code that reads as "site broken". Text/html
5
+ * requests now get a static bilingual landing page (EN / 中文, no JavaScript,
6
+ * no external requests); every other client keeps the exact JSON 404.
7
+ */
8
+ export type LandingLang = 'en' | 'zh';
9
+ /** Escape the two values that reach the page from outside the build: the
10
+ * request Host header and the operator-configured email. Reflected input
11
+ * must never become markup. */
12
+ export declare function escapeHtml(value: string): string;
13
+ /** Browsers always send Accept: text/html on navigation; API clients send a
14
+ * wildcard, application/json or nothing at all — those keep the JSON view. */
15
+ export declare function wantsHtml(accept: string | undefined): boolean;
16
+ /** ?lang=zh|en wins explicitly (the toggle link); anything else follows the
17
+ * browser's primary Accept-Language tag (zh* -> zh), defaulting to English. */
18
+ export declare function pickLandingLang(query: URLSearchParams, acceptLanguage: string | undefined): LandingLang;
19
+ export interface LandingOptions {
20
+ lang: LandingLang;
21
+ /** Host the visitor actually dialed (request Host header) — the join
22
+ * commands on the page must show the address that brought them there. */
23
+ host: string;
24
+ /** Operator's invite-request address (hub config.toml contactEmail); empty
25
+ * = the page says "contact the hub operator" without an address. */
26
+ contactEmail: string;
27
+ version: string;
28
+ }
29
+ /** One fully monolingual page per language; the toggle links to the other. */
30
+ export declare function landingHtml({ lang, host, contactEmail, version }: LandingOptions): string;
31
+ export interface LandingRouteDeps {
32
+ /** Live config object — read per request so a hot-reloaded contactEmail
33
+ * shows up without a restart. */
34
+ config: {
35
+ contactEmail: string;
36
+ };
37
+ version: string;
38
+ }
39
+ export declare function registerLandingRoute(router: Router, deps: LandingRouteDeps): void;
@@ -0,0 +1,276 @@
1
+ import { sendJson } from './http.js';
2
+ /** Escape the two values that reach the page from outside the build: the
3
+ * request Host header and the operator-configured email. Reflected input
4
+ * must never become markup. */
5
+ export function escapeHtml(value) {
6
+ return value
7
+ .replaceAll('&', '&')
8
+ .replaceAll('<', '&lt;')
9
+ .replaceAll('>', '&gt;')
10
+ .replaceAll('"', '&quot;')
11
+ .replaceAll("'", '&#39;');
12
+ }
13
+ /** Browsers always send Accept: text/html on navigation; API clients send a
14
+ * wildcard, application/json or nothing at all — those keep the JSON view. */
15
+ export function wantsHtml(accept) {
16
+ return typeof accept === 'string' && accept.includes('text/html');
17
+ }
18
+ /** ?lang=zh|en wins explicitly (the toggle link); anything else follows the
19
+ * browser's primary Accept-Language tag (zh* -> zh), defaulting to English. */
20
+ export function pickLandingLang(query, acceptLanguage) {
21
+ const explicit = query.get('lang');
22
+ if (explicit === 'zh' || explicit === 'en')
23
+ return explicit;
24
+ const primary = (acceptLanguage ?? '').split(',')[0]?.trim().toLowerCase() ?? '';
25
+ return primary.startsWith('zh') ? 'zh' : 'en';
26
+ }
27
+ const CSS = `
28
+ :root {
29
+ --paper: #F2EDE0;
30
+ --card: #FBF8F0;
31
+ --line: #D9C9A3;
32
+ --navy: #2C3E5C;
33
+ --muted: #6E7A6A;
34
+ --teal: #2F7F7A;
35
+ --cyan: #7FD4CE;
36
+ --terra: #B5622F;
37
+ --olive: #7A8450;
38
+ }
39
+ * { box-sizing: border-box; margin: 0; padding: 0; }
40
+ body {
41
+ font-family: ui-rounded, "SF Pro Rounded", "PingFang SC", system-ui, -apple-system, sans-serif;
42
+ background:
43
+ radial-gradient(1200px 500px at 50% -10%, rgba(200,211,188,.55), transparent 60%),
44
+ var(--paper);
45
+ color: var(--navy);
46
+ min-height: 100vh;
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ padding: 32px 20px;
51
+ }
52
+ .card {
53
+ width: 100%;
54
+ max-width: 680px;
55
+ background: var(--card);
56
+ border: 1px solid var(--line);
57
+ border-radius: 20px;
58
+ box-shadow: 0 12px 40px rgba(44,62,92,.10);
59
+ padding: 44px 48px 28px;
60
+ }
61
+ .top { display: flex; align-items: center; justify-content: space-between; }
62
+ .wordmark { display: flex; align-items: center; gap: 10px; }
63
+ .dot { width: 12px; height: 12px; border-radius: 50%; }
64
+ .dot.teal { background: var(--teal); }
65
+ .dot.terra { background: var(--terra); }
66
+ .dot.olive { background: var(--olive); }
67
+ .wordmark .name { font-size: 22px; font-weight: 800; letter-spacing: -0.02em; }
68
+ .badge {
69
+ font-size: 11px; font-weight: 700; letter-spacing: .12em;
70
+ color: var(--terra); border: 1px solid var(--terra);
71
+ border-radius: 999px; padding: 3px 10px;
72
+ }
73
+ .lang { font-size: 13px; display: flex; align-items: center; gap: 8px; }
74
+ .lang .on { font-weight: 700; color: var(--navy); }
75
+ .lang a { color: var(--teal); font-weight: 600; text-decoration: none; }
76
+ .lang a:hover { text-decoration: underline; }
77
+ .lang .sep { color: var(--line); }
78
+ .stream {
79
+ height: 3px; border-radius: 3px; margin: 26px 0 30px;
80
+ background: linear-gradient(90deg, var(--teal), var(--cyan), transparent 92%);
81
+ }
82
+ h1 { font-size: 33px; letter-spacing: -0.03em; margin-bottom: 14px; }
83
+ .sub { color: var(--muted); font-size: 15px; line-height: 1.7; }
84
+ .sub strong { color: var(--navy); }
85
+ h2 {
86
+ margin: 34px 0 18px;
87
+ font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
88
+ color: var(--teal);
89
+ }
90
+ .step { display: flex; gap: 14px; margin-bottom: 18px; }
91
+ .step .n {
92
+ flex: none; width: 26px; height: 26px; border-radius: 50%;
93
+ background: var(--navy); color: var(--card);
94
+ font-size: 13px; font-weight: 700;
95
+ display: flex; align-items: center; justify-content: center;
96
+ margin-top: 2px;
97
+ }
98
+ .step .body { min-width: 0; }
99
+ .step .t { font-weight: 700; margin-bottom: 2px; }
100
+ .step .d { color: var(--muted); font-size: 14px; line-height: 1.6; }
101
+ code, .code {
102
+ font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
103
+ font-size: 13px;
104
+ }
105
+ .chip {
106
+ display: inline-block; background: rgba(47,127,122,.10);
107
+ border: 1px solid rgba(47,127,122,.25); color: var(--teal);
108
+ border-radius: 6px; padding: 1px 6px;
109
+ }
110
+ a.mail {
111
+ color: var(--teal); font-weight: 700; text-decoration: none;
112
+ border-bottom: 2px solid rgba(47,127,122,.35);
113
+ }
114
+ a.mail:hover { border-bottom-color: var(--teal); }
115
+ pre {
116
+ background: var(--navy); color: #E9F5F3;
117
+ border-radius: 12px; padding: 14px 16px; margin-top: 8px;
118
+ overflow-x: auto; line-height: 1.75;
119
+ }
120
+ pre .c { color: var(--cyan); }
121
+ pre .k { color: #F0C987; }
122
+ .note {
123
+ margin-top: 26px; padding: 12px 16px;
124
+ background: rgba(217,201,163,.28); border: 1px dashed var(--line);
125
+ border-radius: 10px; font-size: 13.5px; color: var(--muted);
126
+ }
127
+ .note b { color: var(--navy); }
128
+ footer {
129
+ margin-top: 30px; padding-top: 18px;
130
+ border-top: 1px solid var(--line);
131
+ display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
132
+ font-size: 12.5px; color: var(--muted);
133
+ }
134
+ footer a { color: var(--teal); text-decoration: none; font-weight: 600; }
135
+ footer a:hover { text-decoration: underline; }
136
+ `;
137
+ const FOOTER_LINKS = `<a href="https://github.com/wehuman01/aweshare">GitHub</a>`;
138
+ /** One fully monolingual page per language; the toggle links to the other. */
139
+ export function landingHtml({ lang, host, contactEmail, version }) {
140
+ const h = escapeHtml(host);
141
+ const email = contactEmail.trim();
142
+ const mail = `<a class="mail" href="mailto:${escapeHtml(email)}">${escapeHtml(email)}</a>`;
143
+ const en = lang === 'en';
144
+ const dict = en
145
+ ? {
146
+ htmlLang: 'en',
147
+ toggle: `<span class="on">EN</span><span class="sep">/</span><a href="/?lang=zh">中文</a>`,
148
+ heading: 'Shared models, one endpoint.',
149
+ intro: 'This is an <strong>aweshare hub</strong> — a self-hosted relay where invited consumers call shared models with standard OpenAI / Anthropic SDKs. <strong>Upstream keys never leave the producer&#39;s device.</strong>',
150
+ connect: 'How to connect',
151
+ step1: 'Ask for an invite',
152
+ step1Body: email
153
+ ? `Email ${mail} to request a one-time invite code (<span class="chip">asi_…</span>) — invites are the only way in.`
154
+ : 'Contact the hub operator for a one-time invite code (<span class="chip">asi_…</span>) — invites are the only way in.',
155
+ step2: 'Redeem it',
156
+ step2Body: 'Swap the code for your consumer token (<span class="chip">asc_…</span>), printed once — save it.',
157
+ step3: 'Point your SDK at this hub',
158
+ step3Body: 'Models are called by <code>namespace/alias</code>. Anthropic SDK / Claude Code: <code>ANTHROPIC_BASE_URL</code>.',
159
+ note: 'Usage is metered per consumer — <b>counting, not billing</b>.',
160
+ community: 'Community hub guide',
161
+ }
162
+ : {
163
+ htmlLang: 'zh-CN',
164
+ toggle: `<a href="/?lang=en">EN</a><span class="sep">/</span><span class="on">中文</span>`,
165
+ heading: '共享模型,单一端点。',
166
+ intro: '这是一个 <strong>aweshare hub</strong>:受邀的消费者用标准 OpenAI / Anthropic SDK 调用共享模型。<strong>上游密钥永不离开提供者设备。</strong>',
167
+ connect: '接入方式',
168
+ step1: '申请邀请',
169
+ step1Body: email
170
+ ? `发邮件至 ${mail} 申请一次性邀请码(<span class="chip">asi_…</span>)——邀请制是唯一入口。`
171
+ : '联系 hub 管理员申请一次性邀请码(<span class="chip">asi_…</span>)——邀请制是唯一入口。',
172
+ step2: '兑换邀请码',
173
+ step2Body: '用它换取你的消费者令牌(<span class="chip">asc_…</span>),只显示一次,请保存好。',
174
+ step3: '把 SDK 指向本站',
175
+ step3Body: '模型按 <code>namespace/alias</code> 调用;Anthropic SDK / Claude Code 用 <code>ANTHROPIC_BASE_URL</code>。',
176
+ note: '用量按消费者计量 —— <b>只计数,不计费</b>。',
177
+ community: '社区 Hub 指南',
178
+ };
179
+ return `<!doctype html>
180
+ <html lang="${dict.htmlLang}">
181
+ <head>
182
+ <meta charset="utf-8">
183
+ <meta name="viewport" content="width=device-width, initial-scale=1">
184
+ <title>aweshare hub</title>
185
+ <style>${CSS}</style>
186
+ </head>
187
+ <body>
188
+ <main class="card">
189
+ <div class="top">
190
+ <div class="wordmark">
191
+ <span class="dot teal"></span><span class="dot terra"></span><span class="dot olive"></span>
192
+ <span class="name">aweshare</span>
193
+ <span class="badge">HUB</span>
194
+ </div>
195
+ <div class="lang">${dict.toggle}</div>
196
+ </div>
197
+ <div class="stream"></div>
198
+
199
+ <h1>${dict.heading}</h1>
200
+ <p class="sub">${dict.intro}</p>
201
+
202
+ <h2>${dict.connect}</h2>
203
+
204
+ <div class="step">
205
+ <div class="n">1</div>
206
+ <div class="body">
207
+ <div class="t">${dict.step1}</div>
208
+ <div class="d">${dict.step1Body}</div>
209
+ </div>
210
+ </div>
211
+
212
+ <div class="step">
213
+ <div class="n">2</div>
214
+ <div class="body">
215
+ <div class="t">${dict.step2}</div>
216
+ <div class="d">${dict.step2Body}</div>
217
+ <pre><span class="c">$</span> aweshare consumer join \\
218
+ --hub https://${h} \\
219
+ --code <span class="k">asi_…</span></pre>
220
+ </div>
221
+ </div>
222
+
223
+ <div class="step">
224
+ <div class="n">3</div>
225
+ <div class="body">
226
+ <div class="t">${dict.step3}</div>
227
+ <div class="d">${dict.step3Body}</div>
228
+ <pre><span class="c">$</span> export OPENAI_BASE_URL=<span class="k">"https://${h}/v1"</span>
229
+ <span class="c">$</span> export OPENAI_API_KEY=<span class="k">"asc_…"</span></pre>
230
+ </div>
231
+ </div>
232
+
233
+ <div class="note">${dict.note}</div>
234
+
235
+ <footer>
236
+ <span>
237
+ ${FOOTER_LINKS} ·
238
+ <a href="https://github.com/wehuman01/aweshare/tree/main/docs/community-hub">${dict.community}</a> ·
239
+ <a href="https://www.npmjs.com/package/aweshare">npm</a>
240
+ </span>
241
+ <span>powered by aweshare v${version} · <code>GET /healthz</code></span>
242
+ </footer>
243
+ </main>
244
+ </body>
245
+ </html>
246
+ `;
247
+ }
248
+ function header(req, name) {
249
+ const value = req.headers[name];
250
+ return typeof value === 'string' ? value : undefined;
251
+ }
252
+ export function registerLandingRoute(router, deps) {
253
+ router.add('GET', '/', (ctx) => {
254
+ // non-browser clients keep the exact JSON 404 the router used to give
255
+ if (!wantsHtml(header(ctx.req, 'accept'))) {
256
+ sendJson(ctx.res, 404, { error: { code: 'NOT_FOUND', message: ctx.url.pathname } });
257
+ return;
258
+ }
259
+ const lang = pickLandingLang(ctx.query, header(ctx.req, 'accept-language'));
260
+ const host = header(ctx.req, 'host') ?? 'localhost';
261
+ const html = landingHtml({
262
+ lang,
263
+ host,
264
+ contactEmail: deps.config.contactEmail,
265
+ version: deps.version,
266
+ });
267
+ // no-store: the page mirrors live config (contactEmail) and the visitor's
268
+ // language choice — neither should be served stale from a shared cache
269
+ ctx.res.writeHead(200, {
270
+ 'content-type': 'text/html; charset=utf-8',
271
+ 'cache-control': 'no-store',
272
+ });
273
+ ctx.res.end(html);
274
+ });
275
+ }
276
+ //# sourceMappingURL=landing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"landing.js","sourceRoot":"","sources":["../src/landing.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { ModelWatch, registerConsumerRoutes } from './consumer.js';
8
8
  import { openDb } from './db.js';
9
9
  import { HttpError, Router, sendError, sendJson } from './http.js';
10
10
  import { registerInviteRoutes } from './invites.js';
11
+ import { registerLandingRoute } from './landing.js';
11
12
  import { AliasSlots, AliasUsers, ConsumerLimiter, RedeemRateLimiter, RejectionCounter, TokenWindow, } from './limiter.js';
12
13
  import { LocalProducer } from './local.js';
13
14
  import { loadOrCreateAdminToken, loadOrCreatePepper } from './tokens.js';
@@ -47,6 +48,9 @@ export function createHubServer(opts = {}) {
47
48
  // {ok, version, wire} — agents preflight `join` against this and doctor
48
49
  // reports hub identity; no auth, nothing secret.
49
50
  router.add('GET', '/healthz', (ctx) => sendJson(ctx.res, 200, { ok: true, version: VERSION, wire: WIRE_VERSION }));
51
+ // the human front door: browsers get a bilingual landing page, everyone
52
+ // else keeps the JSON 404
53
+ registerLandingRoute(router, { config, version: VERSION });
50
54
  registerAdminRoutes(router, { db, auth, log, tunnel, local, slots, users, rejections, watch });
51
55
  const inviteLimiter = new RedeemRateLimiter(config.inviteRedeemPerMinute, config.inviteRedeemPerIpMinute);
52
56
  registerInviteRoutes(router, {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -166,18 +166,27 @@ export interface UsageSummaryRow {
166
166
  errors: number;
167
167
  prompt_tokens: number;
168
168
  completion_tokens: number;
169
+ /** prompt + completion; NULL counts (streaming backends) read as 0. */
170
+ tokens: number;
169
171
  /** Requests whose token counts the upstream never reported — excluded from
170
172
  * the token sums, shown as their own count instead of reading as zero. */
171
173
  unknown_tokens: number;
172
174
  avg_duration_ms: number;
173
175
  last_at: string;
176
+ /** Event id of the group's most recent request — the order tiebreak. */
177
+ last_id: number;
174
178
  }
175
179
  /** Summary groupings: consumer-alias (per person per model, the default),
176
180
  * consumer (per producer × person), alias (per model across people). */
177
181
  export type UsageGroup = 'consumer-alias' | 'consumer' | 'alias';
182
+ /** Summary row orders, matching the hub's sort query parameter: time = most
183
+ * recently used first (the default); consumer/producer/model = that column
184
+ * ascending, newest first within it; tokens/requests = busiest first. */
185
+ export type UsageSort = 'time' | 'consumer' | 'producer' | 'model' | 'tokens' | 'requests';
178
186
  /**
179
187
  * "Who used how much": one row per consumer × alias (default), per producer ×
180
- * consumer, or per alias — busiest first, a person's rows kept together.
188
+ * consumer, or per alias — rows arrive as the hub sorted them (most recently
189
+ * used first by default; --sort on the CLI, sort= on the API).
181
190
  * showProducer=false drops the PRODUCER column when every row is the caller's
182
191
  * own (the producer CLI).
183
192
  */
@@ -274,7 +274,8 @@ export function renderUsage(rows, consumerName) {
274
274
  }
275
275
  /**
276
276
  * "Who used how much": one row per consumer × alias (default), per producer ×
277
- * consumer, or per alias — busiest first, a person's rows kept together.
277
+ * consumer, or per alias — rows arrive as the hub sorted them (most recently
278
+ * used first by default; --sort on the CLI, sort= on the API).
278
279
  * showProducer=false drops the PRODUCER column when every row is the caller's
279
280
  * own (the producer CLI).
280
281
  */