aweshare 0.5.6 → 0.5.8
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.ai.md +6 -5
- package/README.md +31 -11
- package/apps/agent/dist/cli.js +124 -53
- package/apps/agent/dist/cli.js.map +1 -1
- package/apps/agent/dist/daemon.d.ts +2 -2
- package/apps/agent/dist/daemon.js +4 -3
- package/apps/agent/dist/daemon.js.map +1 -1
- package/apps/agent/dist/doctor.js +52 -16
- package/apps/agent/dist/doctor.js.map +1 -1
- package/apps/agent/dist/hub.d.ts +27 -0
- package/apps/agent/dist/hub.js +31 -2
- package/apps/agent/dist/hub.js.map +1 -1
- package/apps/agent/dist/table.d.ts +20 -4
- package/apps/agent/dist/table.js +30 -7
- package/apps/agent/dist/table.js.map +1 -1
- package/apps/consumer/dist/table.d.ts +17 -2
- package/apps/consumer/dist/table.js +18 -3
- package/apps/consumer/dist/table.js.map +1 -1
- package/apps/hub/dist/admin.d.ts +5 -1
- package/apps/hub/dist/admin.js +104 -2
- package/apps/hub/dist/admin.js.map +1 -1
- package/apps/hub/dist/auth.js +1 -1
- package/apps/hub/dist/auth.js.map +1 -1
- package/apps/hub/dist/cli.js +202 -87
- package/apps/hub/dist/cli.js.map +1 -1
- package/apps/hub/dist/config.d.ts +9 -2
- package/apps/hub/dist/config.js +48 -5
- package/apps/hub/dist/config.js.map +1 -1
- package/apps/hub/dist/consumer.d.ts +39 -4
- package/apps/hub/dist/consumer.js +132 -19
- package/apps/hub/dist/consumer.js.map +1 -1
- package/apps/hub/dist/db.d.ts +63 -11
- package/apps/hub/dist/db.js +143 -19
- package/apps/hub/dist/db.js.map +1 -1
- package/apps/hub/dist/http.d.ts +6 -2
- package/apps/hub/dist/http.js +8 -3
- package/apps/hub/dist/http.js.map +1 -1
- package/apps/hub/dist/invites.js +2 -2
- package/apps/hub/dist/invites.js.map +1 -1
- package/apps/hub/dist/limiter.d.ts +35 -4
- package/apps/hub/dist/limiter.js +45 -8
- package/apps/hub/dist/limiter.js.map +1 -1
- package/apps/hub/dist/local.js +11 -0
- package/apps/hub/dist/local.js.map +1 -1
- package/apps/hub/dist/meter.d.ts +6 -1
- package/apps/hub/dist/meter.js +14 -0
- package/apps/hub/dist/meter.js.map +1 -1
- package/apps/hub/dist/server.js +7 -3
- package/apps/hub/dist/server.js.map +1 -1
- package/apps/hub/dist/table.d.ts +33 -5
- package/apps/hub/dist/table.js +45 -14
- package/apps/hub/dist/table.js.map +1 -1
- package/apps/hub/dist/tunnel.js +14 -1
- package/apps/hub/dist/tunnel.js.map +1 -1
- package/bin/aweshare.mjs +3 -3
- package/package.json +1 -1
- package/packages/protocol/dist/index.d.ts +2 -0
- package/packages/protocol/dist/index.js +2 -0
- package/packages/protocol/dist/index.js.map +1 -1
- package/packages/protocol/dist/models.d.ts +23 -0
- package/packages/protocol/dist/models.js +72 -0
- package/packages/protocol/dist/models.js.map +1 -0
- package/packages/protocol/dist/time.d.ts +8 -0
- package/packages/protocol/dist/time.js +69 -0
- package/packages/protocol/dist/time.js.map +1 -0
package/apps/hub/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,9 @@ export declare function hubConfigFromEnv(env?: NodeJS.ProcessEnv): {
|
|
|
29
29
|
consumerMaxConcurrent: number;
|
|
30
30
|
/** No response head within this window -> 504 TICKET_EXPIRED. */
|
|
31
31
|
headTimeoutMs: number;
|
|
32
|
-
/** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT.
|
|
32
|
+
/** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT.
|
|
33
|
+
* 120s: a live stream of coding-agent traffic emits chunks far more often
|
|
34
|
+
* than that, and every idle second holds an admission slot hostage. */
|
|
33
35
|
idleTimeoutMs: number;
|
|
34
36
|
maxBodyBytes: number;
|
|
35
37
|
/** Redeem attempts per minute on the unauthenticated invite endpoint —
|
|
@@ -41,6 +43,11 @@ export declare function hubConfigFromEnv(env?: NodeJS.ProcessEnv): {
|
|
|
41
43
|
inviteRedeemPerIpMinute: number;
|
|
42
44
|
/** Cap on active (non-suspended) producers — the hub's tenant slots. */
|
|
43
45
|
maxProducers: number;
|
|
46
|
+
/** Auto-block an offering after repeated successful responses report a
|
|
47
|
+
* different model than declared. Off by default: mismatches are
|
|
48
|
+
* logged and visible either way; blocking on them risks false positives
|
|
49
|
+
* (versioned or vendor-prefixed model ids) and is the operator's call. */
|
|
50
|
+
autoBlockModelMismatch: boolean;
|
|
44
51
|
};
|
|
45
52
|
export type HubConfig = ReturnType<typeof hubConfigFromEnv>;
|
|
46
53
|
/** Effective hub config: CLI flags (applied by `serve`) > env vars > config.toml > defaults. */
|
|
@@ -50,5 +57,5 @@ export declare function loadHubConfig(env?: NodeJS.ProcessEnv, paths?: HubPaths)
|
|
|
50
57
|
* Returns the names of keys whose value actually changed. Never throws. */
|
|
51
58
|
export declare function applyHubConfig(live: HubConfig, fresh: HubConfig): string[];
|
|
52
59
|
/** Written by `hub init`; every key commented out so an untouched file keeps the defaults. */
|
|
53
|
-
export declare const HUB_CONFIG_TEMPLATE = "# aweshare hub configuration (~/.aweshare-hub/config.toml)\n# Generated by 'aweshare hub init'. Every key is commented out: uncomment one\n# to override its default. Precedence: CLI flags (--host/--port) > environment\n# variables (AWESHARE_*) > this file > defaults.\n\n# Listen address.\n#host = \"0.0.0.0\"\n#port = 8787\n\n# Per-consumer token bucket: refill per second, burst size, max in-flight.\n#consumerRps = 10\n#consumerBurst = 20\n#consumerMaxConcurrent = 8\n\n# Timeouts in ms: no response head within headTimeoutMs -> 504; no bytes\n# within idleTimeoutMs after the head -> 504 (streaming keeps it alive).\n#headTimeoutMs = 120000\n#idleTimeoutMs =
|
|
60
|
+
export declare const HUB_CONFIG_TEMPLATE = "# aweshare hub configuration (~/.aweshare-hub/config.toml)\n# Generated by 'aweshare hub init'. Every key is commented out: uncomment one\n# to override its default. Precedence: CLI flags (--host/--port) > environment\n# variables (AWESHARE_*) > this file > defaults.\n\n# Listen address.\n#host = \"0.0.0.0\"\n#port = 8787\n\n# Per-consumer token bucket: refill per second, burst size, max in-flight.\n#consumerRps = 10\n#consumerBurst = 20\n#consumerMaxConcurrent = 8\n\n# Timeouts in ms: no response head within headTimeoutMs -> 504; no bytes\n# within idleTimeoutMs after the head -> 504 (streaming keeps it alive).\n#headTimeoutMs = 120000\n#idleTimeoutMs = 120000\n\n# Request body cap (32MB) and the unauthenticated invite-redeem rate limits:\n# a per-origin-IP bucket (one visitor must not monopolize admission) plus a\n# global insurance budget shared by every origin.\n#maxBodyBytes = 33554432\n#inviteRedeemPerMinute = 10\n#inviteRedeemPerIpMinute = 5\n\n# Cap on active (non-suspended) producers \u2014 the hub's tenant slots.\n#maxProducers = 10\n\n# Auto-block an offering after repeated successful responses report a model\n# different from its declared upstreamModel. Off by default:\n# mismatches are logged and visible in hub status / consumer list either way,\n# and blocking on them risks false positives on versioned or vendor-prefixed\n# model ids. An auto block clears when the producer re-declares a different\n# upstreamModel; manual blocks (aweshare hub offering block) always persist.\n#autoBlockModelMismatch = false\n\n";
|
|
54
61
|
export declare const HUB_PRODUCE_CONFIG_TEMPLATE = "# aweshare hub-local model catalog (~/.aweshare-hub/config.produce.toml)\n# Generated by 'aweshare hub produce init'. Upstream key values live in\n# secrets.json next to this file.\n\n#[[backends]]\n#id = \"openai\"\n#protocol = \"openai\" # openai | anthropic | responses\n#baseUrl = \"https://api.openai.com/v1\"\n#keyRef = \"openai-key\"\n\n#[[offerings]]\n#alias = \"hub/gpt-4o\" # bare names are auto-prefixed with hub/\n#backend = \"openai\"\n#upstreamModel = \"gpt-4o-2024-11-20\"\n#maxConcurrencyPerUser = 4\n#maxConcurrentUsers = 3\n#dailyTokens = 1000000\n";
|
package/apps/hub/dist/config.js
CHANGED
|
@@ -61,6 +61,18 @@ function hostFromEnv(env, fallback) {
|
|
|
61
61
|
const raw = env.AWESHARE_HUB_HOST;
|
|
62
62
|
return raw === undefined || raw === '' ? fallback : raw;
|
|
63
63
|
}
|
|
64
|
+
/** Parse a boolean env var ('true'/'1' on, 'false'/'0' off); garbage fails
|
|
65
|
+
* fast with the key named. */
|
|
66
|
+
function booleanFromEnv(env, key, fallback) {
|
|
67
|
+
const raw = env[key];
|
|
68
|
+
if (raw === undefined || raw === '')
|
|
69
|
+
return fallback;
|
|
70
|
+
if (raw === 'true' || raw === '1')
|
|
71
|
+
return true;
|
|
72
|
+
if (raw === 'false' || raw === '0')
|
|
73
|
+
return false;
|
|
74
|
+
throw new Error(`${key} must be true or false, got '${raw}'`);
|
|
75
|
+
}
|
|
64
76
|
export function hubConfigFromEnv(env = process.env) {
|
|
65
77
|
return {
|
|
66
78
|
host: hostFromEnv(env, '0.0.0.0'),
|
|
@@ -71,8 +83,10 @@ export function hubConfigFromEnv(env = process.env) {
|
|
|
71
83
|
consumerMaxConcurrent: positiveNumber(env, 'AWESHARE_CONSUMER_CONCURRENCY', 8),
|
|
72
84
|
/** No response head within this window -> 504 TICKET_EXPIRED. */
|
|
73
85
|
headTimeoutMs: positiveNumber(env, 'AWESHARE_HEAD_TIMEOUT_MS', 120_000),
|
|
74
|
-
/** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT.
|
|
75
|
-
|
|
86
|
+
/** No response bytes within this window after head -> 504 STREAM_IDLE_TIMEOUT.
|
|
87
|
+
* 120s: a live stream of coding-agent traffic emits chunks far more often
|
|
88
|
+
* than that, and every idle second holds an admission slot hostage. */
|
|
89
|
+
idleTimeoutMs: positiveNumber(env, 'AWESHARE_IDLE_TIMEOUT_MS', 120_000),
|
|
76
90
|
maxBodyBytes: positiveNumber(env, 'AWESHARE_MAX_BODY_BYTES', 32 * 1024 * 1024),
|
|
77
91
|
/** Redeem attempts per minute on the unauthenticated invite endpoint —
|
|
78
92
|
* the global insurance budget shared by every origin. */
|
|
@@ -83,6 +97,11 @@ export function hubConfigFromEnv(env = process.env) {
|
|
|
83
97
|
inviteRedeemPerIpMinute: positiveNumber(env, 'AWESHARE_INVITE_REDEEM_PER_IP_MIN', 5),
|
|
84
98
|
/** Cap on active (non-suspended) producers — the hub's tenant slots. */
|
|
85
99
|
maxProducers: positiveNumber(env, 'AWESHARE_MAX_PRODUCERS', 10),
|
|
100
|
+
/** Auto-block an offering after repeated successful responses report a
|
|
101
|
+
* different model than declared. Off by default: mismatches are
|
|
102
|
+
* logged and visible either way; blocking on them risks false positives
|
|
103
|
+
* (versioned or vendor-prefixed model ids) and is the operator's call. */
|
|
104
|
+
autoBlockModelMismatch: booleanFromEnv(env, 'AWESHARE_AUTO_BLOCK_MODEL_MISMATCH', false),
|
|
86
105
|
};
|
|
87
106
|
}
|
|
88
107
|
/** Keys config.toml may set — one per HubConfig field, same names as the code. */
|
|
@@ -98,6 +117,7 @@ const CONFIG_FILE_KEYS = new Set([
|
|
|
98
117
|
'inviteRedeemPerMinute',
|
|
99
118
|
'inviteRedeemPerIpMinute',
|
|
100
119
|
'maxProducers',
|
|
120
|
+
'autoBlockModelMismatch',
|
|
101
121
|
]);
|
|
102
122
|
/** Read config.toml from the data dir. Absent file = null; anything wrong with
|
|
103
123
|
* an existing file fails fast with the key named (typos included). */
|
|
@@ -130,6 +150,14 @@ function readConfigFile(paths) {
|
|
|
130
150
|
else
|
|
131
151
|
out.host = value;
|
|
132
152
|
}
|
|
153
|
+
else if (key === 'autoBlockModelMismatch') {
|
|
154
|
+
if (typeof value !== 'boolean') {
|
|
155
|
+
problems.push(`autoBlockModelMismatch must be true or false, got '${value}'`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
out.autoBlockModelMismatch = value;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
133
161
|
else if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
|
|
134
162
|
problems.push(`${key} must be a positive number, got '${value}'`);
|
|
135
163
|
}
|
|
@@ -152,11 +180,12 @@ export function loadHubConfig(env = process.env, paths = resolvePaths(env)) {
|
|
|
152
180
|
consumerBurst: positiveNumber(env, 'AWESHARE_CONSUMER_BURST', file?.consumerBurst ?? 20),
|
|
153
181
|
consumerMaxConcurrent: positiveNumber(env, 'AWESHARE_CONSUMER_CONCURRENCY', file?.consumerMaxConcurrent ?? 8),
|
|
154
182
|
headTimeoutMs: positiveNumber(env, 'AWESHARE_HEAD_TIMEOUT_MS', file?.headTimeoutMs ?? 120_000),
|
|
155
|
-
idleTimeoutMs: positiveNumber(env, 'AWESHARE_IDLE_TIMEOUT_MS', file?.idleTimeoutMs ??
|
|
183
|
+
idleTimeoutMs: positiveNumber(env, 'AWESHARE_IDLE_TIMEOUT_MS', file?.idleTimeoutMs ?? 120_000),
|
|
156
184
|
maxBodyBytes: positiveNumber(env, 'AWESHARE_MAX_BODY_BYTES', file?.maxBodyBytes ?? 32 * 1024 * 1024),
|
|
157
185
|
inviteRedeemPerMinute: positiveNumber(env, 'AWESHARE_INVITE_REDEEM_PER_MIN', file?.inviteRedeemPerMinute ?? 10),
|
|
158
186
|
inviteRedeemPerIpMinute: positiveNumber(env, 'AWESHARE_INVITE_REDEEM_PER_IP_MIN', file?.inviteRedeemPerIpMinute ?? 5),
|
|
159
187
|
maxProducers: positiveNumber(env, 'AWESHARE_MAX_PRODUCERS', file?.maxProducers ?? 10),
|
|
188
|
+
autoBlockModelMismatch: booleanFromEnv(env, 'AWESHARE_AUTO_BLOCK_MODEL_MISMATCH', file?.autoBlockModelMismatch ?? false),
|
|
160
189
|
};
|
|
161
190
|
}
|
|
162
191
|
/** Fields a running server picks up on SIGHUP. host/port are listen-time —
|
|
@@ -171,7 +200,13 @@ const RELOADABLE_KEYS = [
|
|
|
171
200
|
'inviteRedeemPerMinute',
|
|
172
201
|
'inviteRedeemPerIpMinute',
|
|
173
202
|
'maxProducers',
|
|
203
|
+
'autoBlockModelMismatch',
|
|
174
204
|
];
|
|
205
|
+
/** Correlated copy: one generic key keeps key and value type-linked, so a key
|
|
206
|
+
* list mixing numbers and booleans assigns without a cast. */
|
|
207
|
+
function copyKey(live, fresh, key) {
|
|
208
|
+
live[key] = fresh[key];
|
|
209
|
+
}
|
|
175
210
|
/** Copy the reloadable fields of `fresh` onto `live` IN PLACE — request handlers
|
|
176
211
|
* hold references to the live object, so mutation is what makes new values visible.
|
|
177
212
|
* Returns the names of keys whose value actually changed. Never throws. */
|
|
@@ -180,7 +215,7 @@ export function applyHubConfig(live, fresh) {
|
|
|
180
215
|
for (const key of RELOADABLE_KEYS) {
|
|
181
216
|
if (live[key] !== fresh[key])
|
|
182
217
|
changed.push(key);
|
|
183
|
-
live
|
|
218
|
+
copyKey(live, fresh, key);
|
|
184
219
|
}
|
|
185
220
|
return changed;
|
|
186
221
|
}
|
|
@@ -202,7 +237,7 @@ export const HUB_CONFIG_TEMPLATE = `# aweshare hub configuration (~/.aweshare-hu
|
|
|
202
237
|
# Timeouts in ms: no response head within headTimeoutMs -> 504; no bytes
|
|
203
238
|
# within idleTimeoutMs after the head -> 504 (streaming keeps it alive).
|
|
204
239
|
#headTimeoutMs = 120000
|
|
205
|
-
#idleTimeoutMs =
|
|
240
|
+
#idleTimeoutMs = 120000
|
|
206
241
|
|
|
207
242
|
# Request body cap (32MB) and the unauthenticated invite-redeem rate limits:
|
|
208
243
|
# a per-origin-IP bucket (one visitor must not monopolize admission) plus a
|
|
@@ -214,6 +249,14 @@ export const HUB_CONFIG_TEMPLATE = `# aweshare hub configuration (~/.aweshare-hu
|
|
|
214
249
|
# Cap on active (non-suspended) producers — the hub's tenant slots.
|
|
215
250
|
#maxProducers = 10
|
|
216
251
|
|
|
252
|
+
# Auto-block an offering after repeated successful responses report a model
|
|
253
|
+
# different from its declared upstreamModel. Off by default:
|
|
254
|
+
# mismatches are logged and visible in hub status / consumer list either way,
|
|
255
|
+
# and blocking on them risks false positives on versioned or vendor-prefixed
|
|
256
|
+
# model ids. An auto block clears when the producer re-declares a different
|
|
257
|
+
# upstreamModel; manual blocks (aweshare hub offering block) always persist.
|
|
258
|
+
#autoBlockModelMismatch = false
|
|
259
|
+
|
|
217
260
|
`;
|
|
218
261
|
export const HUB_PRODUCE_CONFIG_TEMPLATE = `# aweshare hub-local model catalog (~/.aweshare-hub/config.produce.toml)
|
|
219
262
|
# Generated by 'aweshare hub produce init'. Upstream key values live in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@ import type { AuthContext } from './auth.js';
|
|
|
5
5
|
import type { HubConfig } from './config.js';
|
|
6
6
|
import { type OfferingRow } from './db.js';
|
|
7
7
|
import { type Router } from './http.js';
|
|
8
|
-
import type { AliasSlots, AliasUsers, ConsumerLimiter, TokenWindow } from './limiter.js';
|
|
8
|
+
import type { AliasSlots, AliasUsers, ConsumerLimiter, RejectionCounter, TokenWindow } from './limiter.js';
|
|
9
9
|
import type { LocalProducer } from './local.js';
|
|
10
10
|
import type { Tunnel } from './tunnel.js';
|
|
11
11
|
/** Hub defaults when the producer's register message omits the per-offering caps. */
|
|
12
12
|
export declare const DEFAULT_MAX_CONCURRENT_USERS = 3;
|
|
13
13
|
export declare const DEFAULT_DAILY_TOKENS = 1000000;
|
|
14
|
-
export type OfferingStatus = 'online' | 'degraded' | 'offline';
|
|
14
|
+
export type OfferingStatus = 'online' | 'degraded' | 'offline' | 'blocked';
|
|
15
15
|
/** Status of any offering row, whichever side serves it: hub-local rows read
|
|
16
16
|
* the in-process producer, tunnel rows the producer session. */
|
|
17
17
|
export declare function offeringStatusOf(tunnel: Pick<Tunnel, 'offeringStatus'>, local: Pick<LocalProducer, 'offeringStatus'>, o: OfferingRow): OfferingStatus;
|
|
@@ -24,8 +24,10 @@ export interface OfferingView {
|
|
|
24
24
|
}
|
|
25
25
|
export declare function offeringView(tunnel: Pick<Tunnel, 'offeringStatus'>, local: Pick<LocalProducer, 'offeringStatus'>, slots: Pick<AliasSlots, 'countRequests'>, users: Pick<AliasUsers, 'countUsers'>): OfferingView;
|
|
26
26
|
/** One offering as the discovery views present it: caps with hub defaults
|
|
27
|
-
* applied, live tunnel status, in-flight occupancy
|
|
28
|
-
* the
|
|
27
|
+
* applied, live tunnel status, in-flight occupancy, today's used tokens and
|
|
28
|
+
* the model-honesty verdict (what the response reports, audited
|
|
29
|
+
* against the producer's declaration) — the row shape of /v1/catalog and the
|
|
30
|
+
* admin/producer offerings view alike. */
|
|
29
31
|
export declare function serializeOffering(db: Database.Database, view: OfferingView, o: OfferingRow & {
|
|
30
32
|
producer: string;
|
|
31
33
|
}): {
|
|
@@ -34,13 +36,41 @@ export declare function serializeOffering(db: Database.Database, view: OfferingV
|
|
|
34
36
|
protocol: Protocol;
|
|
35
37
|
protocolLabel: string;
|
|
36
38
|
status: OfferingStatus;
|
|
39
|
+
blocked: boolean;
|
|
40
|
+
blockedReason: string | null;
|
|
41
|
+
observedModel: string | null;
|
|
42
|
+
observedAt: string | null;
|
|
43
|
+
modelMatch: import("aweshare-protocol").ModelComparison | null;
|
|
44
|
+
/** Kept for older clients: null means no current evidence or an
|
|
45
|
+
* observation less specific than the declaration. */
|
|
46
|
+
modelVerified: boolean | null;
|
|
37
47
|
maxConcurrencyPerUser: number;
|
|
38
48
|
maxConcurrentUsers: number;
|
|
39
49
|
activeUsers: number;
|
|
40
50
|
activeRequests: number;
|
|
41
51
|
dailyTokens: number;
|
|
52
|
+
bonusTokens: number;
|
|
42
53
|
usedDailyTokens: number;
|
|
43
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* In-memory per offering declaration state: the last verdict (flip-gated warn
|
|
57
|
+
* log) and consecutive mismatch count. Protocol and declared id are part of
|
|
58
|
+
* the key, so a re-register or another wire cannot inherit stale strikes.
|
|
59
|
+
* Durable evidence remains in usage_events.
|
|
60
|
+
*/
|
|
61
|
+
export declare class ModelWatch {
|
|
62
|
+
private readonly db;
|
|
63
|
+
private readonly config;
|
|
64
|
+
private readonly log;
|
|
65
|
+
private verdicts;
|
|
66
|
+
private strikes;
|
|
67
|
+
constructor(db: Database.Database, config: HubConfig, log: Logger);
|
|
68
|
+
/** Administrative restore starts a fresh evidence window for this alias. */
|
|
69
|
+
reset(alias: string): void;
|
|
70
|
+
/** Audit one finished response: `observed` is the model id the upstream
|
|
71
|
+
* named (null = it named none; neither verdict nor strikes change). */
|
|
72
|
+
record(alias: string, protocol: Protocol, producer: string, declared: string, observed: string | null): void;
|
|
73
|
+
}
|
|
44
74
|
export interface ConsumerDeps {
|
|
45
75
|
db: Database.Database;
|
|
46
76
|
auth: AuthContext;
|
|
@@ -51,6 +81,11 @@ export interface ConsumerDeps {
|
|
|
51
81
|
tpm: TokenWindow;
|
|
52
82
|
slots: AliasSlots;
|
|
53
83
|
users: AliasUsers;
|
|
84
|
+
/** Model-honesty audit state shared by every request (see ModelWatch). */
|
|
85
|
+
watch: ModelWatch;
|
|
86
|
+
/** Admission rejections, counted per code/alias/consumer — 429s never
|
|
87
|
+
* reach the usage rows, so this is the only throttling-pressure record. */
|
|
88
|
+
rejections: RejectionCounter;
|
|
54
89
|
log: Logger;
|
|
55
90
|
}
|
|
56
91
|
export declare function registerConsumerRoutes(router: Router, deps: ConsumerDeps): void;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { parseAlias, protocolLabel } from '../../../packages/protocol/dist/index.js';
|
|
1
|
+
import { compareModels, parseAlias, protocolLabel } from '../../../packages/protocol/dist/index.js';
|
|
2
2
|
import { requireConsumer } from './auth.js';
|
|
3
|
-
import { getOffering, insertUsageEvent, LOCAL_PRODUCER_ID, listOfferings,
|
|
3
|
+
import { blockOffering, dailyBonusOf, dailyWindowStart, getOffering, insertUsageEvent, LOCAL_PRODUCER_ID, lastObservedModel, listOfferings, sumTokensForAliasSince, sumTokensUsed, touchLastSeen, } from './db.js';
|
|
4
4
|
import { HttpError, readBody, sendError, sendJson } from './http.js';
|
|
5
|
+
import { jitteredRetrySec } from './limiter.js';
|
|
5
6
|
import { resolveLimits, safeParseLimits } from './limits.js';
|
|
6
7
|
import { UsageExtractor } from './meter.js';
|
|
7
8
|
import { sanitizeTunnelRequestHeaders, sanitizeUpstreamResponseHeaders } from './sanitize.js';
|
|
@@ -21,24 +22,106 @@ export function offeringView(tunnel, local, slots, users) {
|
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
/** One offering as the discovery views present it: caps with hub defaults
|
|
24
|
-
* applied, live tunnel status, in-flight occupancy
|
|
25
|
-
* the
|
|
25
|
+
* applied, live tunnel status, in-flight occupancy, today's used tokens and
|
|
26
|
+
* the model-honesty verdict (what the response reports, audited
|
|
27
|
+
* against the producer's declaration) — the row shape of /v1/catalog and the
|
|
28
|
+
* admin/producer offerings view alike. */
|
|
26
29
|
export function serializeOffering(db, view, o) {
|
|
27
30
|
const daily = o.daily_tokens ?? DEFAULT_DAILY_TOKENS;
|
|
31
|
+
// today's effective cap: the declaration plus an unexpired owner bonus —
|
|
32
|
+
// tables subtract usedDailyTokens from dailyTokens, so it rides along
|
|
33
|
+
const bonus = dailyBonusOf(o);
|
|
34
|
+
const observed = lastObservedModel(db, o.alias, o.protocol, o.upstream_model);
|
|
35
|
+
const modelMatch = observed ? compareModels(o.upstream_model, observed.model) : null;
|
|
28
36
|
return {
|
|
29
37
|
producer: o.producer,
|
|
30
38
|
alias: o.alias,
|
|
31
39
|
protocol: o.protocol,
|
|
32
40
|
protocolLabel: protocolLabel(o.protocol),
|
|
33
|
-
status: view.statusOf(o),
|
|
41
|
+
status: (o.blocked_at ? 'blocked' : view.statusOf(o)),
|
|
42
|
+
blocked: o.blocked_at !== null,
|
|
43
|
+
blockedReason: o.blocked_reason,
|
|
44
|
+
observedModel: observed?.model ?? null,
|
|
45
|
+
observedAt: observed?.at ?? null,
|
|
46
|
+
modelMatch,
|
|
47
|
+
/** Kept for older clients: null means no current evidence or an
|
|
48
|
+
* observation less specific than the declaration. */
|
|
49
|
+
modelVerified: modelMatch === null || modelMatch === 'insufficient' ? null : modelMatch !== 'mismatch',
|
|
34
50
|
maxConcurrencyPerUser: o.max_concurrency_per_user,
|
|
35
51
|
maxConcurrentUsers: o.max_concurrent_users ?? DEFAULT_MAX_CONCURRENT_USERS,
|
|
36
52
|
activeUsers: view.activeUsersOf(o.alias),
|
|
37
53
|
activeRequests: view.activeRequestsOf(o.alias),
|
|
38
|
-
dailyTokens: daily,
|
|
39
|
-
|
|
54
|
+
dailyTokens: daily === 0 ? 0 : daily + bonus,
|
|
55
|
+
bonusTokens: bonus,
|
|
56
|
+
usedDailyTokens: daily > 0 ? sumTokensForAliasSince(db, o.alias, dailyWindowStart(o)) : 0,
|
|
40
57
|
};
|
|
41
58
|
}
|
|
59
|
+
/** Consecutive mismatches before autoBlockModelMismatch blocks an alias —
|
|
60
|
+
* same threshold as the backend-degraded machinery (one blip is noise). */
|
|
61
|
+
const AUTO_BLOCK_STRIKES = 2;
|
|
62
|
+
/**
|
|
63
|
+
* In-memory per offering declaration state: the last verdict (flip-gated warn
|
|
64
|
+
* log) and consecutive mismatch count. Protocol and declared id are part of
|
|
65
|
+
* the key, so a re-register or another wire cannot inherit stale strikes.
|
|
66
|
+
* Durable evidence remains in usage_events.
|
|
67
|
+
*/
|
|
68
|
+
export class ModelWatch {
|
|
69
|
+
db;
|
|
70
|
+
config;
|
|
71
|
+
log;
|
|
72
|
+
verdicts = new Map();
|
|
73
|
+
strikes = new Map();
|
|
74
|
+
constructor(db, config, log) {
|
|
75
|
+
this.db = db;
|
|
76
|
+
this.config = config;
|
|
77
|
+
this.log = log;
|
|
78
|
+
}
|
|
79
|
+
/** Administrative restore starts a fresh evidence window for this alias. */
|
|
80
|
+
reset(alias) {
|
|
81
|
+
const prefix = `${alias}\0`;
|
|
82
|
+
for (const key of this.verdicts.keys())
|
|
83
|
+
if (key.startsWith(prefix))
|
|
84
|
+
this.verdicts.delete(key);
|
|
85
|
+
for (const key of this.strikes.keys())
|
|
86
|
+
if (key.startsWith(prefix))
|
|
87
|
+
this.strikes.delete(key);
|
|
88
|
+
}
|
|
89
|
+
/** Audit one finished response: `observed` is the model id the upstream
|
|
90
|
+
* named (null = it named none; neither verdict nor strikes change). */
|
|
91
|
+
record(alias, protocol, producer, declared, observed) {
|
|
92
|
+
if (observed === null)
|
|
93
|
+
return;
|
|
94
|
+
const comparison = compareModels(declared, observed);
|
|
95
|
+
if (comparison === 'insufficient')
|
|
96
|
+
return;
|
|
97
|
+
const match = comparison !== 'mismatch';
|
|
98
|
+
const key = `${alias}\0${protocol}\0${declared}`;
|
|
99
|
+
if (this.verdicts.get(key) !== match) {
|
|
100
|
+
this.verdicts.set(key, match);
|
|
101
|
+
if (match) {
|
|
102
|
+
this.log.info({ alias, declared, observed }, 'offering model matches its declaration again');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.log.warn({ alias, producer, declared, observed }, 'offering model mismatch: upstream serves a different model than declared');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (match) {
|
|
109
|
+
this.strikes.delete(key);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const strikes = (this.strikes.get(key) ?? 0) + 1;
|
|
113
|
+
this.strikes.set(key, strikes);
|
|
114
|
+
if (this.config.autoBlockModelMismatch && strikes >= AUTO_BLOCK_STRIKES) {
|
|
115
|
+
const rows = blockOffering(this.db, alias, 'model-mismatch');
|
|
116
|
+
if (rows > 0) {
|
|
117
|
+
// A later operator restore starts a fresh two-strike window.
|
|
118
|
+
this.strikes.delete(key);
|
|
119
|
+
this.verdicts.delete(key);
|
|
120
|
+
this.log.warn({ alias, producer, declared, observed, strikes }, `offering auto-blocked after ${strikes} consecutive model mismatches`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
42
125
|
export function registerConsumerRoutes(router, deps) {
|
|
43
126
|
router.add('POST', '/v1/chat/completions', (ctx) => handleInference(ctx, deps, 'openai', '/chat/completions'));
|
|
44
127
|
router.add('POST', '/v1/messages', (ctx) => handleInference(ctx, deps, 'anthropic', '/messages'));
|
|
@@ -47,7 +130,7 @@ export function registerConsumerRoutes(router, deps) {
|
|
|
47
130
|
router.add('GET', '/v1/catalog', (ctx) => handleCatalog(ctx, deps));
|
|
48
131
|
}
|
|
49
132
|
async function handleInference(ctx, deps, protocol, path) {
|
|
50
|
-
const { db, auth, config, tunnel, local, limiter, tpm, slots, users } = deps;
|
|
133
|
+
const { db, auth, config, tunnel, local, limiter, tpm, slots, users, watch } = deps;
|
|
51
134
|
const { row: consumer } = requireConsumer(ctx.req, auth);
|
|
52
135
|
touchLastSeen(db, 'consumer', consumer.id);
|
|
53
136
|
const raw = await readBody(ctx.req, config.maxBodyBytes);
|
|
@@ -68,6 +151,14 @@ async function handleInference(ctx, deps, protocol, path) {
|
|
|
68
151
|
if (!offering) {
|
|
69
152
|
throw new HttpError(404, 'ALIAS_NOT_FOUND', `unknown model alias: ${model} (no ${protocol} offering under this alias)`);
|
|
70
153
|
}
|
|
154
|
+
// an operator (or the auto-block) closed this alias — fail before admission,
|
|
155
|
+
// the same way a dead tunnel would
|
|
156
|
+
if (offering.blocked_at) {
|
|
157
|
+
const why = offering.blocked_reason === 'model-mismatch'
|
|
158
|
+
? 'its responses name a different model than declared'
|
|
159
|
+
: 'operator decision';
|
|
160
|
+
throw new HttpError(503, 'OFFERING_BLOCKED', `alias ${model} is blocked (${why}) — ask the hub operator`);
|
|
161
|
+
}
|
|
71
162
|
// hub-owned rows dispatch in-process; everything else needs a live tunnel
|
|
72
163
|
const isLocal = offering.producer_id === LOCAL_PRODUCER_ID;
|
|
73
164
|
let session;
|
|
@@ -83,32 +174,48 @@ async function handleInference(ctx, deps, protocol, path) {
|
|
|
83
174
|
}
|
|
84
175
|
}
|
|
85
176
|
const limits = resolveLimits(safeParseLimits(consumer.config), config);
|
|
177
|
+
// every admission denial below is counted (the operator's only visibility
|
|
178
|
+
// into throttling pressure) and, when a retry could work soon, carries a
|
|
179
|
+
// Retry-After hint — jittered wherever the true wait depends on other
|
|
180
|
+
// requests, so rejected clients back off out of sync instead of re-herding
|
|
181
|
+
const deny = (code, message, retryAfterSec) => {
|
|
182
|
+
deps.rejections.record(code, model, consumer.id);
|
|
183
|
+
throw new HttpError(429, code, message, retryAfterSec === undefined ? undefined : { 'Retry-After': String(retryAfterSec) });
|
|
184
|
+
};
|
|
86
185
|
if (limits.maxTotalTokens !== null && sumTokensUsed(db, consumer.id) >= limits.maxTotalTokens) {
|
|
87
|
-
|
|
186
|
+
// lifetime budget: retrying is pointless until the operator raises it
|
|
187
|
+
deny('QUOTA_EXCEEDED', `consumer ${consumer.name} reached its total token budget (${limits.maxTotalTokens})`);
|
|
88
188
|
}
|
|
89
189
|
if (limits.tpm !== null && !tpm.allow(consumer.id, limits.tpm)) {
|
|
90
|
-
|
|
190
|
+
deny('RATE_LIMITED', `consumer ${consumer.name} exceeded ${limits.tpm} TPM`, jitteredRetrySec());
|
|
91
191
|
}
|
|
92
192
|
const limited = limiter.admit(consumer.id, limits);
|
|
93
193
|
if (limited)
|
|
94
|
-
|
|
194
|
+
deny(limited.code, 'consumer rate limit exceeded', limited.retryAfterSec);
|
|
95
195
|
const perUser = offering.max_concurrency_per_user;
|
|
96
196
|
if (!slots.acquire(model, consumer.id, perUser)) {
|
|
97
197
|
limiter.release(consumer.id);
|
|
98
|
-
|
|
198
|
+
deny('PRODUCER_MAX_CONCURRENCY', `consumer ${consumer.name} is at its per-user concurrency on ${model} (${perUser})`, jitteredRetrySec());
|
|
99
199
|
}
|
|
100
200
|
const maxUsers = offering.max_concurrent_users ?? DEFAULT_MAX_CONCURRENT_USERS;
|
|
101
201
|
if (!users.acquire(model, consumer.id, maxUsers)) {
|
|
102
202
|
limiter.release(consumer.id);
|
|
103
203
|
slots.release(model, consumer.id);
|
|
104
|
-
|
|
204
|
+
deny('PRODUCER_MAX_USERS', `alias ${model} is at its max concurrent users (${maxUsers})`, jitteredRetrySec());
|
|
105
205
|
}
|
|
106
206
|
const dailyTokens = offering.daily_tokens ?? DEFAULT_DAILY_TOKENS;
|
|
107
|
-
if (dailyTokens > 0
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
207
|
+
if (dailyTokens > 0) {
|
|
208
|
+
// today's window may start later than midnight (owner refresh) and the
|
|
209
|
+
// cap may carry an unexpired bonus — both lapse at Beijing midnight
|
|
210
|
+
const cap = dailyTokens + dailyBonusOf(offering);
|
|
211
|
+
if (sumTokensForAliasSince(db, model, dailyWindowStart(offering)) >= cap) {
|
|
212
|
+
users.release(model, consumer.id);
|
|
213
|
+
limiter.release(consumer.id);
|
|
214
|
+
slots.release(model, consumer.id);
|
|
215
|
+
// resets at Beijing midnight — a seconds-scale hint would invite
|
|
216
|
+
// pointless retries, so no Retry-After here
|
|
217
|
+
deny('QUOTA_EXCEEDED', `alias ${model} reached its daily shared token budget (${cap}) — resets at Beijing midnight (UTC+8)`);
|
|
218
|
+
}
|
|
112
219
|
}
|
|
113
220
|
// route on the public alias, but hand the serving side the real upstream model id
|
|
114
221
|
body.model = offering.upstream_model;
|
|
@@ -137,11 +244,17 @@ async function handleInference(ctx, deps, protocol, path) {
|
|
|
137
244
|
if (counts) {
|
|
138
245
|
tpm.record(consumer.id, (counts.promptTokens ?? 0) + (counts.completionTokens ?? 0));
|
|
139
246
|
}
|
|
247
|
+
// what the upstream itself served, kept beside the producer's declaration
|
|
248
|
+
// (the alias namespace is the producer name by registration rule)
|
|
249
|
+
const successful = result.status !== null && result.status >= 200 && result.status < 300 && !result.errorCode;
|
|
250
|
+
const observed = successful ? (usage?.observedModel ?? null) : null;
|
|
251
|
+
watch.record(model, protocol, alias.namespace, offering.upstream_model, observed);
|
|
140
252
|
insertUsageEvent(db, {
|
|
141
253
|
consumer_id: consumer.id,
|
|
142
254
|
producer_id: offering.producer_id,
|
|
143
255
|
alias: model,
|
|
144
256
|
upstream_model: offering.upstream_model,
|
|
257
|
+
observed_model: observed,
|
|
145
258
|
protocol,
|
|
146
259
|
streaming: usage?.streaming ? 1 : 0,
|
|
147
260
|
status: result.status,
|
|
@@ -202,7 +315,7 @@ function handleModels(ctx, deps) {
|
|
|
202
315
|
owned_by: o.alias.split('/')[0],
|
|
203
316
|
protocol: o.protocol,
|
|
204
317
|
protocolLabel: protocolLabel(o.protocol),
|
|
205
|
-
status: offeringStatusOf(deps.tunnel, deps.local, o),
|
|
318
|
+
status: o.blocked_at ? 'blocked' : offeringStatusOf(deps.tunnel, deps.local, o),
|
|
206
319
|
}));
|
|
207
320
|
sendJson(ctx.res, 200, { object: 'list', data });
|
|
208
321
|
}
|