omnigateway 0.10.1 → 0.10.3

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 (3) hide show
  1. package/bin/omni.js +24 -8
  2. package/gateway.js +24 -8
  3. package/package.json +1 -1
package/bin/omni.js CHANGED
@@ -23656,13 +23656,13 @@ var antigravityDescriptor = {
23656
23656
  writeOverInput: { fiveMinute: 0, oneHour: 0 },
23657
23657
  catalog: ANTIGRAVITY_MODELS,
23658
23658
  modelPrefixes: ["gemini-"],
23659
- callback: { uri: "http://127.0.0.1:51121/callback", label: "Antigravity" },
23659
+ callback: { uri: "https://antigravity.google/oauth-callback", label: "Antigravity" },
23660
23660
  presentation: {
23661
23661
  label: "Antigravity",
23662
23662
  order: 6,
23663
23663
  tone: "violet",
23664
23664
  colour: { light: "oklch(0.52 0.14 277)", dark: "oklch(0.74 0.14 277)" },
23665
- pasteHint: "Approve in a browser on the gateway's own machine \u2014 or SSH-forward port 51121 first. When it redirects to 127.0.0.1, paste the whole URL."
23665
+ pasteHint: "Approve in any browser, then paste the whole URL it lands on. A code shown on its own works too."
23666
23666
  }
23667
23667
  };
23668
23668
 
@@ -26505,6 +26505,17 @@ function closingTurn(contents, note2) {
26505
26505
  }
26506
26506
  var hasCacheControl = (block) => ("cacheControl" in block) && block.cacheControl !== undefined;
26507
26507
  var PRUNED = "antigravity:tool-schema-pruned";
26508
+ var AGENT_PREAMBLE_DROPPED = "antigravity:agent-preamble-dropped";
26509
+ function dropAgentPreamble(system, note2) {
26510
+ const paragraphs = system.split(/(?:\r?\n){2,}/);
26511
+ const kept = paragraphs.filter((p) => p.trim() !== AGENT_PREAMBLE);
26512
+ if (kept.length === paragraphs.length)
26513
+ return system;
26514
+ note2(AGENT_PREAMBLE_DROPPED);
26515
+ return kept.join(`
26516
+
26517
+ `);
26518
+ }
26508
26519
  var MAX_STOP_SEQUENCES = 5;
26509
26520
  var MAX_THINKING_BUDGET = 65535;
26510
26521
  function scalarValue(kind, value) {
@@ -26797,8 +26808,9 @@ function toAntigravityWire(req, model, identity) {
26797
26808
  const request2 = {
26798
26809
  contents: closingTurn(openingTurn(mergeSameRole(contents), note2), note2)
26799
26810
  };
26800
- const system = systemText(req.system, "antigravity", note2);
26801
- if (system !== undefined && system.length > 0) {
26811
+ const joined = systemText(req.system, "antigravity", note2);
26812
+ const system = joined === undefined ? undefined : dropAgentPreamble(joined, note2);
26813
+ if (system !== undefined && system.trim().length > 0) {
26802
26814
  request2.systemInstruction = { parts: [{ text: system }] };
26803
26815
  }
26804
26816
  const generationConfig = {};
@@ -27254,8 +27266,9 @@ function parseAntigravityQuota(value, now) {
27254
27266
  var antigravityOAuthFlow = {
27255
27267
  kind: "pkce",
27256
27268
  supportsManualPaste: true,
27257
- async* start({ redirectUri, randomState }) {
27269
+ async* start({ redirectUri, randomState, pkce }) {
27258
27270
  const state = randomState();
27271
+ const { verifier, challenge } = pkce();
27259
27272
  const url2 = new URL(AUTHORIZE_URL2);
27260
27273
  url2.searchParams.set("client_id", CLIENT_ID2);
27261
27274
  url2.searchParams.set("response_type", "code");
@@ -27264,9 +27277,11 @@ var antigravityOAuthFlow = {
27264
27277
  url2.searchParams.set("state", state);
27265
27278
  url2.searchParams.set("access_type", "offline");
27266
27279
  url2.searchParams.set("prompt", "consent");
27280
+ url2.searchParams.set("code_challenge", challenge);
27281
+ url2.searchParams.set("code_challenge_method", "S256");
27267
27282
  return {
27268
27283
  authorizeUrl: url2.toString(),
27269
- pending: { verifier: "", challenge: "", state, redirectUri }
27284
+ pending: { verifier, challenge, state, redirectUri }
27270
27285
  };
27271
27286
  },
27272
27287
  async* exchange({ code, pending, fail, now }) {
@@ -27279,7 +27294,8 @@ var antigravityOAuthFlow = {
27279
27294
  client_id: CLIENT_ID2,
27280
27295
  client_secret: CLIENT_SECRET,
27281
27296
  code: (rawCode ?? "").trim(),
27282
- redirect_uri: pending.redirectUri
27297
+ redirect_uri: pending.redirectUri,
27298
+ code_verifier: pending.verifier
27283
27299
  }, fail);
27284
27300
  const email3 = yield* readEmail(token.accessToken);
27285
27301
  const { projectId, tier } = yield* bootstrapProject(token.accessToken);
@@ -35739,7 +35755,7 @@ function createServiceDeps(input2) {
35739
35755
  }
35740
35756
 
35741
35757
  // apps/cli/src/version.ts
35742
- var VERSION = "0.10.1";
35758
+ var VERSION = "0.10.3";
35743
35759
 
35744
35760
  // apps/cli/src/commands/service.ts
35745
35761
  function gatewayArgv(root) {
package/gateway.js CHANGED
@@ -29099,13 +29099,13 @@ var antigravityDescriptor = {
29099
29099
  writeOverInput: { fiveMinute: 0, oneHour: 0 },
29100
29100
  catalog: ANTIGRAVITY_MODELS,
29101
29101
  modelPrefixes: ["gemini-"],
29102
- callback: { uri: "http://127.0.0.1:51121/callback", label: "Antigravity" },
29102
+ callback: { uri: "https://antigravity.google/oauth-callback", label: "Antigravity" },
29103
29103
  presentation: {
29104
29104
  label: "Antigravity",
29105
29105
  order: 6,
29106
29106
  tone: "violet",
29107
29107
  colour: { light: "oklch(0.52 0.14 277)", dark: "oklch(0.74 0.14 277)" },
29108
- pasteHint: "Approve in a browser on the gateway's own machine \u2014 or SSH-forward port 51121 first. When it redirects to 127.0.0.1, paste the whole URL."
29108
+ pasteHint: "Approve in any browser, then paste the whole URL it lands on. A code shown on its own works too."
29109
29109
  }
29110
29110
  };
29111
29111
 
@@ -32072,6 +32072,17 @@ function closingTurn(contents, note) {
32072
32072
  }
32073
32073
  var hasCacheControl = (block) => ("cacheControl" in block) && block.cacheControl !== undefined;
32074
32074
  var PRUNED = "antigravity:tool-schema-pruned";
32075
+ var AGENT_PREAMBLE_DROPPED = "antigravity:agent-preamble-dropped";
32076
+ function dropAgentPreamble(system, note) {
32077
+ const paragraphs = system.split(/(?:\r?\n){2,}/);
32078
+ const kept = paragraphs.filter((p) => p.trim() !== AGENT_PREAMBLE);
32079
+ if (kept.length === paragraphs.length)
32080
+ return system;
32081
+ note(AGENT_PREAMBLE_DROPPED);
32082
+ return kept.join(`
32083
+
32084
+ `);
32085
+ }
32075
32086
  var MAX_STOP_SEQUENCES = 5;
32076
32087
  var MAX_THINKING_BUDGET = 65535;
32077
32088
  function scalarValue(kind, value) {
@@ -32364,8 +32375,9 @@ function toAntigravityWire(req, model, identity) {
32364
32375
  const request2 = {
32365
32376
  contents: closingTurn(openingTurn(mergeSameRole(contents), note), note)
32366
32377
  };
32367
- const system = systemText(req.system, "antigravity", note);
32368
- if (system !== undefined && system.length > 0) {
32378
+ const joined = systemText(req.system, "antigravity", note);
32379
+ const system = joined === undefined ? undefined : dropAgentPreamble(joined, note);
32380
+ if (system !== undefined && system.trim().length > 0) {
32369
32381
  request2.systemInstruction = { parts: [{ text: system }] };
32370
32382
  }
32371
32383
  const generationConfig = {};
@@ -32821,8 +32833,9 @@ function parseAntigravityQuota(value, now) {
32821
32833
  var antigravityOAuthFlow = {
32822
32834
  kind: "pkce",
32823
32835
  supportsManualPaste: true,
32824
- async* start({ redirectUri, randomState }) {
32836
+ async* start({ redirectUri, randomState, pkce }) {
32825
32837
  const state = randomState();
32838
+ const { verifier, challenge } = pkce();
32826
32839
  const url2 = new URL(AUTHORIZE_URL2);
32827
32840
  url2.searchParams.set("client_id", CLIENT_ID2);
32828
32841
  url2.searchParams.set("response_type", "code");
@@ -32831,9 +32844,11 @@ var antigravityOAuthFlow = {
32831
32844
  url2.searchParams.set("state", state);
32832
32845
  url2.searchParams.set("access_type", "offline");
32833
32846
  url2.searchParams.set("prompt", "consent");
32847
+ url2.searchParams.set("code_challenge", challenge);
32848
+ url2.searchParams.set("code_challenge_method", "S256");
32834
32849
  return {
32835
32850
  authorizeUrl: url2.toString(),
32836
- pending: { verifier: "", challenge: "", state, redirectUri }
32851
+ pending: { verifier, challenge, state, redirectUri }
32837
32852
  };
32838
32853
  },
32839
32854
  async* exchange({ code, pending, fail, now }) {
@@ -32846,7 +32861,8 @@ var antigravityOAuthFlow = {
32846
32861
  client_id: CLIENT_ID2,
32847
32862
  client_secret: CLIENT_SECRET,
32848
32863
  code: (rawCode ?? "").trim(),
32849
- redirect_uri: pending.redirectUri
32864
+ redirect_uri: pending.redirectUri,
32865
+ code_verifier: pending.verifier
32850
32866
  }, fail);
32851
32867
  const email3 = yield* readEmail(token.accessToken);
32852
32868
  const { projectId, tier } = yield* bootstrapProject(token.accessToken);
@@ -60644,7 +60660,7 @@ function createRing(limits) {
60644
60660
  }
60645
60661
 
60646
60662
  // apps/gateway/src/version.ts
60647
- var VERSION = "0.10.1";
60663
+ var VERSION = "0.10.3";
60648
60664
 
60649
60665
  // apps/gateway/src/app.ts
60650
60666
  var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnigateway",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
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>",