omnigateway 0.12.0 → 0.12.1

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/bin/omni.js CHANGED
@@ -37474,7 +37474,7 @@ function createServiceDeps(input2) {
37474
37474
  }
37475
37475
 
37476
37476
  // apps/cli/src/version.ts
37477
- var VERSION = "0.12.0";
37477
+ var VERSION = "0.12.1";
37478
37478
 
37479
37479
  // apps/cli/src/commands/service.ts
37480
37480
  function gatewayArgv(root) {
package/gateway.js CHANGED
@@ -56081,8 +56081,16 @@ function readCookie(request2, name) {
56081
56081
  }
56082
56082
  return null;
56083
56083
  }
56084
- function sessionCookie(request2, token, maxAge) {
56085
- const secure = new URL(request2.url).protocol === "https:" ? ["Secure"] : [];
56084
+ function forwardedProto(request2) {
56085
+ const header = request2.headers.get("x-forwarded-proto");
56086
+ if (header === null)
56087
+ return null;
56088
+ return header.split(",")[0]?.trim().toLowerCase() ?? null;
56089
+ }
56090
+ function sessionCookie(request2, baseUrl, token, maxAge) {
56091
+ const configured2 = URL.canParse(baseUrl) ? new URL(baseUrl).protocol === "https:" : false;
56092
+ const https = configured2 || forwardedProto(request2) === "https" || new URL(request2.url).protocol === "https:";
56093
+ const secure = https ? ["Secure"] : [];
56086
56094
  return [
56087
56095
  `${ADMIN_COOKIE}=${token}`,
56088
56096
  "Path=/",
@@ -56409,7 +56417,7 @@ function adminRoutes(deps) {
56409
56417
  if (token === null)
56410
56418
  throw new GatewayError("INTERNAL", "could not create admin session");
56411
56419
  logger2.info("admin setup completed");
56412
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56420
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56413
56421
  return { ok: true };
56414
56422
  }).post("/api/login", async ({ request: request2, set: set2 }) => {
56415
56423
  const body2 = await readJsonRecord(request2);
@@ -56421,13 +56429,13 @@ function adminRoutes(deps) {
56421
56429
  throw new GatewayError("AUTH", "invalid password");
56422
56430
  }
56423
56431
  logger2.info("admin login succeeded");
56424
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56432
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56425
56433
  return { ok: true };
56426
56434
  }).post("/api/logout", async ({ request: request2, set: set2 }) => {
56427
56435
  const token = readCookie(request2, ADMIN_COOKIE);
56428
56436
  if (token !== null)
56429
56437
  await deps.admin.logout(token);
56430
- set2.headers["set-cookie"] = sessionCookie(request2, "", 0);
56438
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, "", 0);
56431
56439
  return { ok: true };
56432
56440
  }).get("/api/credentials", async ({ request: request2 }) => {
56433
56441
  await requireReader(request2, deps.admin);
@@ -56692,13 +56700,13 @@ function clientRoutes(deps) {
56692
56700
  throw new GatewayError("AUTH", "invalid api key");
56693
56701
  }
56694
56702
  logger2.info("client login succeeded");
56695
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56703
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56696
56704
  return { ok: true };
56697
56705
  }).post("/api/client/logout", async ({ request: request2, set: set2 }) => {
56698
56706
  const token = readCookie(request2, ADMIN_COOKIE);
56699
56707
  if (token !== null)
56700
56708
  await deps.admin.logout(token);
56701
- set2.headers["set-cookie"] = sessionCookie(request2, "", 0);
56709
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, "", 0);
56702
56710
  return { ok: true };
56703
56711
  }).get("/api/client/summary", async ({ request: request2 }) => {
56704
56712
  const apiKeyId = await requireClient(request2, deps.admin);
@@ -62294,7 +62302,7 @@ function createRing(limits = DEFAULT_RING_LIMITS) {
62294
62302
  }
62295
62303
 
62296
62304
  // apps/gateway/src/version.ts
62297
- var VERSION = "0.12.0";
62305
+ var VERSION = "0.12.1";
62298
62306
 
62299
62307
  // apps/gateway/src/app.ts
62300
62308
  var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
@@ -62458,6 +62466,7 @@ function createApp(deps) {
62458
62466
  store: deps.store,
62459
62467
  admin,
62460
62468
  sessionTtlMs: ADMIN_SESSION_TTL_MS,
62469
+ baseUrl: deps.baseUrl,
62461
62470
  ...deps.dayOffsetMinutes === undefined ? {} : { dayOffsetMinutes: deps.dayOffsetMinutes },
62462
62471
  now,
62463
62472
  logger: logger2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnigateway",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Self-hosted AI gateway with Anthropic- and OpenAI-compatible APIs, an admin console, and a CLI",
5
5
  "license": "MIT",
6
6
  "author": "Harismawan <mail@harismawan.com>",