aweshare 0.4.3 → 0.4.5

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.
Files changed (82) hide show
  1. package/README.md +19 -6
  2. package/apps/agent/dist/cli.js +75 -3
  3. package/apps/agent/dist/cli.js.map +1 -1
  4. package/apps/agent/dist/config.d.ts +6 -26
  5. package/apps/agent/dist/config.js +11 -86
  6. package/apps/agent/dist/config.js.map +1 -1
  7. package/apps/agent/dist/connection.d.ts +5 -11
  8. package/apps/agent/dist/connection.js +49 -128
  9. package/apps/agent/dist/connection.js.map +1 -1
  10. package/apps/agent/dist/doctor.js +25 -5
  11. package/apps/agent/dist/doctor.js.map +1 -1
  12. package/apps/agent/dist/hub.d.ts +21 -0
  13. package/apps/agent/dist/hub.js +25 -1
  14. package/apps/agent/dist/hub.js.map +1 -1
  15. package/apps/agent/dist/index.d.ts +1 -3
  16. package/apps/agent/dist/index.js +1 -3
  17. package/apps/agent/dist/index.js.map +1 -1
  18. package/apps/agent/dist/table.d.ts +31 -0
  19. package/apps/agent/dist/table.js +80 -0
  20. package/apps/agent/dist/table.js.map +1 -0
  21. package/apps/agent/package.json +2 -1
  22. package/apps/consumer/dist/cli.js +4 -2
  23. package/apps/consumer/dist/cli.js.map +1 -1
  24. package/apps/consumer/dist/table.d.ts +6 -1
  25. package/apps/consumer/dist/table.js +30 -14
  26. package/apps/consumer/dist/table.js.map +1 -1
  27. package/apps/consumer/package.json +1 -1
  28. package/apps/hub/dist/admin.d.ts +9 -0
  29. package/apps/hub/dist/admin.js +30 -1
  30. package/apps/hub/dist/admin.js.map +1 -1
  31. package/apps/hub/dist/cli.js +44 -3
  32. package/apps/hub/dist/cli.js.map +1 -1
  33. package/apps/hub/dist/config.d.ts +3 -1
  34. package/apps/hub/dist/config.js +27 -0
  35. package/apps/hub/dist/config.js.map +1 -1
  36. package/apps/hub/dist/consumer.d.ts +33 -0
  37. package/apps/hub/dist/consumer.js +58 -36
  38. package/apps/hub/dist/consumer.js.map +1 -1
  39. package/apps/hub/dist/db.d.ts +16 -2
  40. package/apps/hub/dist/db.js +71 -14
  41. package/apps/hub/dist/db.js.map +1 -1
  42. package/apps/hub/dist/limiter.d.ts +5 -0
  43. package/apps/hub/dist/limiter.js +15 -0
  44. package/apps/hub/dist/limiter.js.map +1 -1
  45. package/apps/hub/dist/local.d.ts +105 -0
  46. package/apps/hub/dist/local.js +414 -0
  47. package/apps/hub/dist/local.js.map +1 -0
  48. package/apps/hub/dist/server.d.ts +3 -0
  49. package/apps/hub/dist/server.js +15 -3
  50. package/apps/hub/dist/server.js.map +1 -1
  51. package/apps/hub/dist/table.d.ts +15 -0
  52. package/apps/hub/dist/table.js +19 -1
  53. package/apps/hub/dist/table.js.map +1 -1
  54. package/apps/hub/dist/tunnel.d.ts +23 -1
  55. package/apps/hub/dist/tunnel.js +19 -14
  56. package/apps/hub/dist/tunnel.js.map +1 -1
  57. package/apps/hub/package.json +2 -1
  58. package/bin/aweshare.mjs +1 -1
  59. package/package.json +3 -2
  60. package/packages/producer-core/dist/adapters.d.ts +23 -0
  61. package/{apps/agent → packages/producer-core}/dist/adapters.js +1 -1
  62. package/packages/producer-core/dist/adapters.js.map +1 -0
  63. package/packages/producer-core/dist/catalog.d.ts +39 -0
  64. package/packages/producer-core/dist/catalog.js +121 -0
  65. package/packages/producer-core/dist/catalog.js.map +1 -0
  66. package/packages/producer-core/dist/index.d.ts +5 -0
  67. package/packages/producer-core/dist/index.js +6 -0
  68. package/packages/producer-core/dist/index.js.map +1 -0
  69. package/packages/producer-core/dist/job.d.ts +44 -0
  70. package/packages/producer-core/dist/job.js +92 -0
  71. package/packages/producer-core/dist/job.js.map +1 -0
  72. package/packages/producer-core/dist/probe.d.ts +6 -0
  73. package/packages/producer-core/dist/probe.js +30 -0
  74. package/packages/producer-core/dist/probe.js.map +1 -0
  75. package/packages/protocol/dist/alias.d.ts +2 -0
  76. package/packages/protocol/dist/alias.js +4 -0
  77. package/packages/protocol/dist/alias.js.map +1 -1
  78. package/apps/agent/dist/adapters.d.ts +0 -15
  79. package/apps/agent/dist/adapters.js.map +0 -1
  80. /package/{apps/agent → packages/producer-core}/dist/health.d.ts +0 -0
  81. /package/{apps/agent → packages/producer-core}/dist/health.js +0 -0
  82. /package/{apps/agent → packages/producer-core}/dist/health.js.map +0 -0
@@ -1,6 +1,6 @@
1
1
  import { parseAlias } from '../../../packages/protocol/dist/index.js';
2
2
  import { requireConsumer } from './auth.js';
3
- import { getOffering, insertUsageEvent, listOfferings, sumTokensForAliasToday, sumTokensUsed, touchLastSeen, } from './db.js';
3
+ import { getOffering, insertUsageEvent, LOCAL_PRODUCER_ID, listOfferings, sumTokensForAliasToday, sumTokensUsed, touchLastSeen, } from './db.js';
4
4
  import { HttpError, readBody, sendError, sendJson } from './http.js';
5
5
  import { resolveLimits, safeParseLimits } from './limits.js';
6
6
  import { UsageExtractor } from './meter.js';
@@ -8,6 +8,36 @@ import { sanitizeTunnelRequestHeaders, sanitizeUpstreamResponseHeaders } from '.
8
8
  /** Hub defaults when the producer's register message omits the per-offering caps. */
9
9
  export const DEFAULT_MAX_CONCURRENT_USERS = 3;
10
10
  export const DEFAULT_DAILY_TOKENS = 1_000_000;
11
+ /** Status of any offering row, whichever side serves it: hub-local rows read
12
+ * the in-process producer, tunnel rows the producer session. */
13
+ export function offeringStatusOf(tunnel, local, o) {
14
+ return o.producer_id === LOCAL_PRODUCER_ID ? local.offeringStatus(o) : tunnel.offeringStatus(o);
15
+ }
16
+ export function offeringView(tunnel, local, slots, users) {
17
+ return {
18
+ statusOf: (o) => offeringStatusOf(tunnel, local, o),
19
+ activeUsersOf: (alias) => users.countUsers(alias),
20
+ activeRequestsOf: (alias) => slots.countRequests(alias),
21
+ };
22
+ }
23
+ /** One offering as the discovery views present it: caps with hub defaults
24
+ * applied, live tunnel status, in-flight occupancy and today's used tokens —
25
+ * the row shape of /v1/catalog and the admin/producer offerings view alike. */
26
+ export function serializeOffering(db, view, o) {
27
+ const daily = o.daily_tokens ?? DEFAULT_DAILY_TOKENS;
28
+ return {
29
+ producer: o.producer,
30
+ alias: o.alias,
31
+ protocol: o.protocol,
32
+ status: view.statusOf(o),
33
+ maxConcurrencyPerUser: o.max_concurrency_per_user,
34
+ maxConcurrentUsers: o.max_concurrent_users ?? DEFAULT_MAX_CONCURRENT_USERS,
35
+ activeUsers: view.activeUsersOf(o.alias),
36
+ activeRequests: view.activeRequestsOf(o.alias),
37
+ dailyTokens: daily,
38
+ usedDailyTokens: daily > 0 ? sumTokensForAliasToday(db, o.alias) : 0,
39
+ };
40
+ }
11
41
  export function registerConsumerRoutes(router, deps) {
12
42
  router.add('POST', '/v1/chat/completions', (ctx) => handleInference(ctx, deps, 'openai', '/chat/completions'));
13
43
  router.add('POST', '/v1/messages', (ctx) => handleInference(ctx, deps, 'anthropic', '/messages'));
@@ -15,14 +45,8 @@ export function registerConsumerRoutes(router, deps) {
15
45
  router.add('GET', '/v1/models', (ctx) => handleModels(ctx, deps));
16
46
  router.add('GET', '/v1/catalog', (ctx) => handleCatalog(ctx, deps));
17
47
  }
18
- /** The consumer endpoint (and tunnel path) each protocol speaks. */
19
- const ENDPOINT_FOR_PROTOCOL = {
20
- openai: '/v1/chat/completions',
21
- anthropic: '/v1/messages',
22
- responses: '/v1/responses',
23
- };
24
48
  async function handleInference(ctx, deps, protocol, path) {
25
- const { db, auth, config, tunnel, limiter, tpm, slots, users } = deps;
49
+ const { db, auth, config, tunnel, local, limiter, tpm, slots, users } = deps;
26
50
  const { row: consumer } = requireConsumer(ctx.req, auth);
27
51
  touchLastSeen(db, 'consumer', consumer.id);
28
52
  const raw = await readBody(ctx.req, config.maxBodyBytes);
@@ -38,17 +62,24 @@ async function handleInference(ctx, deps, protocol, path) {
38
62
  if (!alias || typeof model !== 'string') {
39
63
  throw new HttpError(400, 'PROTOCOL_MISMATCH', `model must be an alias like namespace/name, got: ${String(model)}`);
40
64
  }
41
- const offering = getOffering(db, model);
42
- if (!offering)
43
- throw new HttpError(404, 'ALIAS_NOT_FOUND', `unknown model alias: ${model}`);
44
- if (offering.protocol !== protocol) {
45
- throw new HttpError(400, 'PROTOCOL_MISMATCH', `alias ${model} speaks ${offering.protocol}; use the ${ENDPOINT_FOR_PROTOCOL[offering.protocol]} endpoint`);
65
+ // an alias may speak several protocols — pick the row matching the endpoint
66
+ const offering = getOffering(db, model, protocol);
67
+ if (!offering) {
68
+ throw new HttpError(404, 'ALIAS_NOT_FOUND', `unknown model alias: ${model} (no ${protocol} offering under this alias)`);
46
69
  }
47
- const session = tunnel.getSession(offering.producer_id);
48
- if (!session)
49
- throw new HttpError(503, 'PRODUCER_OFFLINE', `producer of ${model} is offline`);
50
- if (session.backendStatus.get(offering.backend_id)?.state === 'degraded') {
51
- throw new HttpError(503, 'BACKEND_DEGRADED', `backend for ${model} is degraded`);
70
+ // hub-owned rows dispatch in-process; everything else needs a live tunnel
71
+ const isLocal = offering.producer_id === LOCAL_PRODUCER_ID;
72
+ let session;
73
+ if (isLocal) {
74
+ local.check(offering); // 503s mirror the tunnel paths below
75
+ }
76
+ else {
77
+ session = tunnel.getSession(offering.producer_id);
78
+ if (!session)
79
+ throw new HttpError(503, 'PRODUCER_OFFLINE', `producer of ${model} is offline`);
80
+ if (session.backendStatus.get(offering.backend_id)?.state === 'degraded') {
81
+ throw new HttpError(503, 'BACKEND_DEGRADED', `backend for ${model} is degraded`);
82
+ }
52
83
  }
53
84
  const limits = resolveLimits(safeParseLimits(consumer.config), config);
54
85
  if (limits.maxTotalTokens !== null && sumTokensUsed(db, consumer.id) >= limits.maxTotalTokens) {
@@ -78,13 +109,13 @@ async function handleInference(ctx, deps, protocol, path) {
78
109
  slots.release(model, consumer.id);
79
110
  throw new HttpError(429, 'QUOTA_EXCEEDED', `alias ${model} reached its daily shared token budget (${dailyTokens}) — resets at UTC midnight`);
80
111
  }
81
- // route on the public alias, but hand the producer the real upstream model id
112
+ // route on the public alias, but hand the serving side the real upstream model id
82
113
  body.model = offering.upstream_model;
83
114
  const outBody = Buffer.from(JSON.stringify(body), 'utf8');
84
115
  const query = {};
85
116
  for (const [key, value] of ctx.query)
86
117
  query[key] = value;
87
- const relay = tunnel.openRequest(session, {
118
+ const init = {
88
119
  protocol,
89
120
  backendId: offering.backend_id,
90
121
  method: 'POST',
@@ -92,7 +123,10 @@ async function handleInference(ctx, deps, protocol, path) {
92
123
  query: Object.keys(query).length > 0 ? query : null,
93
124
  headers: sanitizeTunnelRequestHeaders(ctx.req),
94
125
  body: outBody,
95
- });
126
+ };
127
+ const relay = isLocal
128
+ ? local.openRequest(offering, init)
129
+ : tunnel.openRequest(session, init);
96
130
  /** Release admission + write the usage row; exactly once per exit path. */
97
131
  const finalize = (result, usage) => {
98
132
  limiter.release(consumer.id);
@@ -166,7 +200,7 @@ function handleModels(ctx, deps) {
166
200
  created: Math.floor(Date.parse(o.updated_at) / 1000) || 0,
167
201
  owned_by: o.alias.split('/')[0],
168
202
  protocol: o.protocol,
169
- status: deps.tunnel.offeringStatus(o),
203
+ status: offeringStatusOf(deps.tunnel, deps.local, o),
170
204
  }));
171
205
  sendJson(ctx.res, 200, { object: 'list', data });
172
206
  }
@@ -177,20 +211,8 @@ function handleModels(ctx, deps) {
177
211
  function handleCatalog(ctx, deps) {
178
212
  const { row: consumer } = requireConsumer(ctx.req, deps.auth);
179
213
  touchLastSeen(deps.db, 'consumer', consumer.id);
180
- const offerings = listOfferings(deps.db).map((o) => {
181
- const daily = o.daily_tokens ?? DEFAULT_DAILY_TOKENS;
182
- const used = daily > 0 ? sumTokensForAliasToday(deps.db, o.alias) : 0;
183
- return {
184
- producer: o.producer,
185
- alias: o.alias,
186
- protocol: o.protocol,
187
- status: deps.tunnel.offeringStatus(o),
188
- maxConcurrencyPerUser: o.max_concurrency_per_user,
189
- maxConcurrentUsers: o.max_concurrent_users ?? DEFAULT_MAX_CONCURRENT_USERS,
190
- dailyTokens: daily,
191
- usedDailyTokens: used,
192
- };
193
- });
214
+ const view = offeringView(deps.tunnel, deps.local, deps.slots, deps.users);
215
+ const offerings = listOfferings(deps.db).map((o) => serializeOffering(deps.db, view, o));
194
216
  sendJson(ctx.res, 200, { object: 'catalog', offerings });
195
217
  }
196
218
  //# sourceMappingURL=consumer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,19 @@ export type InviteRow = {
72
72
  code_plain: string | null;
73
73
  };
74
74
  export type NewUsageEvent = Omit<UsageEventRow, 'id' | 'at'>;
75
+ /** The hub's own built-in producer: catalog rows under this id are served
76
+ * in-process (see local.ts) — never through a tunnel, never a tenant slot. */
77
+ export declare const LOCAL_PRODUCER_ID = 0;
78
+ /** Reserved producer name; hub-local offerings are namespaced under it. */
79
+ export declare const LOCAL_PRODUCER_NAME = "hub";
80
+ /**
81
+ * Idempotently seed the built-in local producer row. The empty token hash can
82
+ * never match a real credential (hashToken always yields 64 hex chars), so the
83
+ * row is unreachable as an identity — it only anchors the 'hub' alias
84
+ * namespace. Returns false when the reserved name is already taken by a real
85
+ * producer (pre-existing deployment); callers decide whether that is fatal.
86
+ */
87
+ export declare function ensureLocalProducer(db: Database.Database): boolean;
75
88
  export declare function openDb(dbFile: string): Database.Database;
76
89
  export declare function insertProducer(db: Database.Database, name: string, tokenHash: string, email?: string | null, tokenPlain?: string | null): ProducerRow;
77
90
  export declare function insertConsumer(db: Database.Database, name: string, tokenHash: string, tokenPlain?: string | null): ConsumerRow;
@@ -85,7 +98,8 @@ export declare function listTokens(db: Database.Database): {
85
98
  producers: Omit<ProducerRow, "token_hash">[];
86
99
  consumers: Omit<ConsumerRow, "token_hash" | "config">[];
87
100
  };
88
- /** Active (non-suspended) producers — the scarce resource behind the capacity cap. */
101
+ /** Active (non-suspended) producers — the scarce resource behind the capacity
102
+ * cap. The built-in local producer (id 0) is not a tenant and never counts. */
89
103
  export declare function countActiveProducers(db: Database.Database): number;
90
104
  export declare function touchLastSeen(db: Database.Database, role: 'producer' | 'consumer', id: number): void;
91
105
  export declare function insertInvite(db: Database.Database, codeHash: string, name: string | null, expiresAt: string | null, codePlain?: string | null, role?: 'producer' | 'consumer'): InviteRow;
@@ -147,7 +161,7 @@ export declare function redeemInvite(db: Database.Database, invite: InviteRow, t
147
161
  email: string | null;
148
162
  }, tokenPlain?: string | null, now?: string): ProducerRow | ConsumerRow | 'already-redeemed' | 'name-taken';
149
163
  export declare function upsertOfferings(db: Database.Database, producerId: number, offerings: Offering[]): void;
150
- export declare function getOffering(db: Database.Database, alias: string): OfferingRow | undefined;
164
+ export declare function getOffering(db: Database.Database, alias: string, protocol: Protocol): OfferingRow | undefined;
151
165
  /** Every registered offering, aliased with its producer name (for the catalog). */
152
166
  export declare function listOfferings(db: Database.Database): (OfferingRow & {
153
167
  producer: string;
@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS consumers (
23
23
  token_plain TEXT
24
24
  );
25
25
  CREATE TABLE IF NOT EXISTS offerings (
26
- alias TEXT PRIMARY KEY,
26
+ alias TEXT NOT NULL,
27
27
  producer_id INTEGER NOT NULL REFERENCES producers(id),
28
28
  protocol TEXT NOT NULL,
29
29
  upstream_model TEXT NOT NULL,
@@ -31,7 +31,8 @@ CREATE TABLE IF NOT EXISTS offerings (
31
31
  max_concurrency_per_user INTEGER NOT NULL DEFAULT 1,
32
32
  max_concurrent_users INTEGER,
33
33
  daily_tokens INTEGER,
34
- updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now'))
34
+ updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
35
+ PRIMARY KEY (alias, protocol)
35
36
  );
36
37
  CREATE TABLE IF NOT EXISTS usage_events (
37
38
  id INTEGER PRIMARY KEY,
@@ -68,6 +69,27 @@ CREATE TABLE IF NOT EXISTS invites (
68
69
  code_plain TEXT
69
70
  );
70
71
  `;
72
+ /** The hub's own built-in producer: catalog rows under this id are served
73
+ * in-process (see local.ts) — never through a tunnel, never a tenant slot. */
74
+ export const LOCAL_PRODUCER_ID = 0;
75
+ /** Reserved producer name; hub-local offerings are namespaced under it. */
76
+ export const LOCAL_PRODUCER_NAME = 'hub';
77
+ /**
78
+ * Idempotently seed the built-in local producer row. The empty token hash can
79
+ * never match a real credential (hashToken always yields 64 hex chars), so the
80
+ * row is unreachable as an identity — it only anchors the 'hub' alias
81
+ * namespace. Returns false when the reserved name is already taken by a real
82
+ * producer (pre-existing deployment); callers decide whether that is fatal.
83
+ */
84
+ export function ensureLocalProducer(db) {
85
+ const info = db
86
+ .prepare("INSERT OR IGNORE INTO producers (id, name, token_hash) VALUES (?, ?, '')")
87
+ .run(LOCAL_PRODUCER_ID, LOCAL_PRODUCER_NAME);
88
+ if (info.changes > 0)
89
+ return true;
90
+ const row = db.prepare('SELECT id FROM producers WHERE id = ?').get(LOCAL_PRODUCER_ID);
91
+ return row !== undefined;
92
+ }
71
93
  export function openDb(dbFile) {
72
94
  mkdirSync(dirname(dbFile), { recursive: true });
73
95
  const db = new Database(dbFile);
@@ -76,7 +98,7 @@ export function openDb(dbFile) {
76
98
  const version = db.pragma('user_version', { simple: true });
77
99
  if (version < 1) {
78
100
  db.exec(SCHEMA_LATEST);
79
- db.pragma('user_version = 10');
101
+ db.pragma('user_version = 11');
80
102
  }
81
103
  else {
82
104
  if (version < 2) {
@@ -178,8 +200,32 @@ export function openDb(dbFile) {
178
200
  // producer's next register rewrites the values anyway
179
201
  db.exec('ALTER TABLE offerings RENAME COLUMN max_concurrency TO max_concurrency_per_user');
180
202
  }
181
- db.pragma('user_version = 10');
203
+ if (version < 11) {
204
+ // v10 -> v11: an alias may speak several wire protocols (the same model
205
+ // via openai and anthropic backends) — key offerings by (alias, protocol);
206
+ // consumers pick the row that matches the endpoint they called
207
+ db.exec(`CREATE TABLE offerings_v11 (
208
+ alias TEXT NOT NULL,
209
+ producer_id INTEGER NOT NULL REFERENCES producers(id),
210
+ protocol TEXT NOT NULL,
211
+ upstream_model TEXT NOT NULL,
212
+ backend_id TEXT NOT NULL,
213
+ max_concurrency_per_user INTEGER NOT NULL DEFAULT 1,
214
+ max_concurrent_users INTEGER,
215
+ daily_tokens INTEGER,
216
+ updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
217
+ PRIMARY KEY (alias, protocol))`);
218
+ db.exec(`INSERT INTO offerings_v11
219
+ SELECT alias, producer_id, protocol, upstream_model, backend_id,
220
+ max_concurrency_per_user, max_concurrent_users, daily_tokens, updated_at
221
+ FROM offerings`);
222
+ db.exec('DROP TABLE offerings');
223
+ db.exec('ALTER TABLE offerings_v11 RENAME TO offerings');
224
+ }
225
+ db.pragma('user_version = 11');
182
226
  }
227
+ // data (not schema), so no version bump: present from the first open on
228
+ ensureLocalProducer(db);
183
229
  return db;
184
230
  }
185
231
  // ---- tokens / identities ----
@@ -214,18 +260,25 @@ export function findConsumerByHash(db, hash) {
214
260
  return db.prepare('SELECT * FROM consumers WHERE token_hash = ?').get(hash);
215
261
  }
216
262
  export function listTokens(db) {
263
+ // the built-in local producer is not a tenant: hide it from the roster unless
264
+ // it is actually serving offerings (the catalog still shows its rows either way)
217
265
  const producers = db
218
- .prepare('SELECT id, name, email, created_at, revoked_at, last_seen_at FROM producers ORDER BY id')
219
- .all();
266
+ .prepare(`SELECT id, name, email, created_at, revoked_at, last_seen_at FROM producers
267
+ WHERE id != ? OR EXISTS (SELECT 1 FROM offerings WHERE producer_id = ?)
268
+ ORDER BY id`)
269
+ .all(LOCAL_PRODUCER_ID, LOCAL_PRODUCER_ID);
220
270
  const consumers = db
221
271
  .prepare('SELECT id, name, created_at, revoked_at, last_seen_at FROM consumers ORDER BY id')
222
272
  .all();
223
273
  return { producers, consumers };
224
274
  }
225
275
  // ---- rosters / liveness ----
226
- /** Active (non-suspended) producers — the scarce resource behind the capacity cap. */
276
+ /** Active (non-suspended) producers — the scarce resource behind the capacity
277
+ * cap. The built-in local producer (id 0) is not a tenant and never counts. */
227
278
  export function countActiveProducers(db) {
228
- const row = db.prepare('SELECT COUNT(*) AS n FROM producers WHERE revoked_at IS NULL').get();
279
+ const row = db
280
+ .prepare('SELECT COUNT(*) AS n FROM producers WHERE revoked_at IS NULL AND id != ?')
281
+ .get(LOCAL_PRODUCER_ID);
229
282
  return row.n;
230
283
  }
231
284
  /**
@@ -388,16 +441,18 @@ export function upsertOfferings(db, producerId, offerings) {
388
441
  const upsert = db.prepare(`
389
442
  INSERT INTO offerings (alias, producer_id, protocol, upstream_model, backend_id, max_concurrency_per_user, max_concurrent_users, daily_tokens, updated_at)
390
443
  VALUES (@alias, @producerId, @protocol, @upstreamModel, @backendId, @maxConcurrencyPerUser, @maxConcurrentUsers, @dailyTokens, strftime('%Y-%m-%dT%H:%M:%fZ','now'))
391
- ON CONFLICT(alias) DO UPDATE SET
444
+ ON CONFLICT(alias, protocol) DO UPDATE SET
392
445
  producer_id = excluded.producer_id,
393
- protocol = excluded.protocol,
394
446
  upstream_model = excluded.upstream_model,
395
447
  backend_id = excluded.backend_id,
396
448
  max_concurrency_per_user = excluded.max_concurrency_per_user,
397
449
  max_concurrent_users = excluded.max_concurrent_users,
398
450
  daily_tokens = excluded.daily_tokens,
399
451
  updated_at = excluded.updated_at`);
400
- const prune = db.prepare('DELETE FROM offerings WHERE producer_id = ? AND alias NOT IN (SELECT value FROM json_each(?))');
452
+ const prune = db.prepare(`DELETE FROM offerings WHERE producer_id = ? AND NOT EXISTS (
453
+ SELECT 1 FROM json_each(?) j
454
+ WHERE json_extract(j.value, '$.a') = offerings.alias
455
+ AND json_extract(j.value, '$.p') = offerings.protocol)`);
401
456
  const tx = db.transaction((items) => {
402
457
  for (const o of items) {
403
458
  upsert.run({
@@ -411,12 +466,14 @@ export function upsertOfferings(db, producerId, offerings) {
411
466
  dailyTokens: o.dailyTokens ?? null,
412
467
  });
413
468
  }
414
- prune.run(producerId, JSON.stringify(items.map((o) => o.alias)));
469
+ prune.run(producerId, JSON.stringify(items.map((o) => ({ a: o.alias, p: o.protocol }))));
415
470
  });
416
471
  tx(offerings);
417
472
  }
418
- export function getOffering(db, alias) {
419
- return db.prepare('SELECT * FROM offerings WHERE alias = ?').get(alias);
473
+ export function getOffering(db, alias, protocol) {
474
+ return db
475
+ .prepare('SELECT * FROM offerings WHERE alias = ? AND protocol = ?')
476
+ .get(alias, protocol);
420
477
  }
421
478
  /** Every registered offering, aliased with its producer name (for the catalog). */
422
479
  export function listOfferings(db) {
@@ -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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"}
@@ -33,6 +33,8 @@ export declare class AliasSlots {
33
33
  /** Returns true when the slot was acquired. */
34
34
  acquire(alias: string, consumerId: number, maxPerUser: number): boolean;
35
35
  release(alias: string, consumerId: number): void;
36
+ /** Total in-flight requests on the alias (read-only view for the catalog). */
37
+ countRequests(alias: string): number;
36
38
  }
37
39
  /** Counts distinct consumers with in-flight requests per alias; the cap comes
38
40
  * from the producer's offering (maxConcurrentUsers). */
@@ -41,6 +43,9 @@ export declare class AliasUsers {
41
43
  /** Returns true when the user slot was acquired. */
42
44
  acquire(alias: string, consumerId: number, maxUsers: number): boolean;
43
45
  release(alias: string, consumerId: number): void;
46
+ /** Distinct consumers with a request in flight on the alias (read-only view
47
+ * for the catalog — the occupancy signal against maxConcurrentUsers). */
48
+ countUsers(alias: string): number;
44
49
  }
45
50
  /**
46
51
  * Fixed-window counter for unauthenticated endpoints (invite redeem). Keyed by
@@ -82,6 +82,16 @@ export class AliasSlots {
82
82
  if (users.size === 0)
83
83
  this.active.delete(alias);
84
84
  }
85
+ /** Total in-flight requests on the alias (read-only view for the catalog). */
86
+ countRequests(alias) {
87
+ const users = this.active.get(alias);
88
+ if (!users)
89
+ return 0;
90
+ let sum = 0;
91
+ for (const n of users.values())
92
+ sum += n;
93
+ return sum;
94
+ }
85
95
  }
86
96
  /** Counts distinct consumers with in-flight requests per alias; the cap comes
87
97
  * from the producer's offering (maxConcurrentUsers). */
@@ -108,6 +118,11 @@ export class AliasUsers {
108
118
  if (users.size === 0)
109
119
  this.active.delete(alias);
110
120
  }
121
+ /** Distinct consumers with a request in flight on the alias (read-only view
122
+ * for the catalog — the occupancy signal against maxConcurrentUsers). */
123
+ countUsers(alias) {
124
+ return this.active.get(alias)?.size ?? 0;
125
+ }
111
126
  }
112
127
  /**
113
128
  * Fixed-window counter for unauthenticated endpoints (invite redeem). Keyed by
@@ -1 +1 @@
1
- {"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { HealthGate, type ResolvedBackend } from 'aweshare-producer-core';
3
+ import type Database from 'better-sqlite3';
4
+ import type { Logger } from 'pino';
5
+ import type { HubConfig, HubPaths } from './config.js';
6
+ import { type OfferingRow } from './db.js';
7
+ import type { DispatchInit, Relay, RelayResult } from './tunnel.js';
8
+ /**
9
+ * One in-process dispatched consumer request: shared upstream job + response
10
+ * pump. Same event, timer and buffering semantics as TunnelRequest, so
11
+ * handleInference treats the two relays identically. pauseInput/resumeInput
12
+ * gate the job's read loop — a held sink.chunk promise is backpressure.
13
+ */
14
+ export declare class LocalRelay extends EventEmitter implements Relay {
15
+ private readonly backend;
16
+ private readonly health;
17
+ private readonly init;
18
+ private readonly config;
19
+ private readonly log;
20
+ readonly requestId: string;
21
+ readonly startedAt: number;
22
+ bytesOut: number;
23
+ private job;
24
+ private result;
25
+ private finished;
26
+ private headArrived;
27
+ private streamingStarted;
28
+ private bufferedChunks;
29
+ private pendingEnd;
30
+ private headTimer;
31
+ private idleTimer;
32
+ private paused;
33
+ private resumeWaiters;
34
+ private headPromise;
35
+ private resolveHead;
36
+ private rejectHead;
37
+ private finishedPromise;
38
+ private settleFinished;
39
+ constructor(backend: ResolvedBackend, health: HealthGate, init: DispatchInit, config: HubConfig, log: Logger);
40
+ dispatch(): Promise<void>;
41
+ waitHead(): Promise<{
42
+ status: number;
43
+ headers: Record<string, string>;
44
+ }>;
45
+ startStreaming(): void;
46
+ waitFinished(): Promise<RelayResult>;
47
+ cancel(): void;
48
+ pauseInput(): void;
49
+ resumeInput(): void;
50
+ private waitWhilePaused;
51
+ private handleHead;
52
+ private handleChunk;
53
+ private handleEnd;
54
+ private handleError;
55
+ private fail;
56
+ private finalize;
57
+ private armIdleTimer;
58
+ private clearTimers;
59
+ }
60
+ export interface LocalProducerDeps {
61
+ db: Database.Database;
62
+ paths: HubPaths;
63
+ config: HubConfig;
64
+ log: Logger;
65
+ }
66
+ /**
67
+ * The hub's built-in producer: backends and offerings live in the hub's own
68
+ * config.toml ([[backends]]/[[offerings]] sections, producer format) with
69
+ * upstream keys in secrets.json. Catalog rows sit under the reserved producer
70
+ * id 0 / name 'hub', so caps, daily tokens, usage metering and the catalog
71
+ * apply unchanged; requests dispatch in-process — no tunnel, no self-dial.
72
+ * Config edits hot-reload (stat-poll, like every other config consumer).
73
+ */
74
+ export declare class LocalProducer {
75
+ private readonly deps;
76
+ private backends;
77
+ private health;
78
+ private probeTimer;
79
+ private reloadTimer;
80
+ private watchers;
81
+ constructor(deps: LocalProducerDeps);
82
+ /** Load the catalog, register it, install the hot-reload watcher. Throws on
83
+ * a broken catalog (fail fast at startup); a no-op when the config carries
84
+ * no catalog sections. */
85
+ start(): void;
86
+ /** Status for hub-owned catalog rows — the local twin of Tunnel.offeringStatus. */
87
+ offeringStatus(offering: OfferingRow): 'online' | 'degraded' | 'offline';
88
+ /** Admission-time check, the local twin of the tunnel session lookup:
89
+ * throws the same 503s a missing/degraded tunnel would. */
90
+ check(offering: OfferingRow): void;
91
+ openRequest(offering: OfferingRow, init: DispatchInit): LocalRelay;
92
+ /** Re-read config + secrets; valid -> swap in place, broken -> keep serving. */
93
+ reload(source: string): void;
94
+ close(): void;
95
+ /** Read + validate the catalog half of config.toml. Throws naming every
96
+ * problem (same rules as a producer's config). */
97
+ private loadCatalog;
98
+ /** Namespace enforcement + Offering rows for the offerings cache. Bare
99
+ * names get the reserved 'hub/' prefix, like the tunnel does per producer. */
100
+ private toRegistrations;
101
+ private apply;
102
+ private installWatcher;
103
+ /** Minimal live probe for degraded backends; success clears the state. */
104
+ private probeDegraded;
105
+ }