@codexhost/cli-darwin-x64 0.4.1 → 0.4.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.
@@ -14,7 +14,8 @@
14
14
  "deepseek-harness",
15
15
  "opencode",
16
16
  "grok",
17
- "omp"
17
+ "omp",
18
+ "antigravity"
18
19
  ];
19
20
  var DEFAULT_RENDERER_AGENTS = KNOWN_RENDERER_AGENTS;
20
21
  function defaultIdFactory(sequence) {
@@ -127,6 +128,7 @@
127
128
  if (agent === "opencode" && model) state.openCodeModel = model;
128
129
  if (agent === "grok" && model) state.grokModel = model;
129
130
  if (agent === "omp" && model) state.ompModel = model;
131
+ if (agent === "antigravity" && model) state.antigravityModel = model;
130
132
  if (agent === "pi" && thinkingOptionId) state.piThinkingOptionId = thinkingOptionId;
131
133
  else if (agent === "pi") delete state.piThinkingOptionId;
132
134
  if (agent === "claude-code" && thinkingOptionId) {
@@ -139,6 +141,9 @@
139
141
  } else if (agent === "opencode") delete state.openCodeThinkingOptionId;
140
142
  if (agent === "omp" && thinkingOptionId) state.ompThinkingOptionId = thinkingOptionId;
141
143
  else if (agent === "omp") delete state.ompThinkingOptionId;
144
+ if (agent === "antigravity" && thinkingOptionId) {
145
+ state.antigravityThinkingOptionId = thinkingOptionId;
146
+ } else if (agent === "antigravity") delete state.antigravityThinkingOptionId;
142
147
  if (agent !== "codex") {
143
148
  const permissionModeByAgent = {};
144
149
  for (const candidate of [
@@ -147,7 +152,8 @@
147
152
  "deepseek-harness",
148
153
  "opencode",
149
154
  "grok",
150
- "omp"
155
+ "omp",
156
+ "antigravity"
151
157
  ]) {
152
158
  const current = state.permissionModeByAgent?.[candidate];
153
159
  if (candidate !== agent && current) permissionModeByAgent[candidate] = current;
@@ -168,7 +174,8 @@
168
174
  if (agent === "deepseek-harness") return state.deepSeekHarnessModel;
169
175
  if (agent === "opencode") return state.openCodeModel;
170
176
  if (agent === "grok") return state.grokModel;
171
- return state.ompModel;
177
+ if (agent === "omp") return state.ompModel;
178
+ return state.antigravityModel;
172
179
  }
173
180
  thinkingOptionForAgent(composer, agent) {
174
181
  const state = this.#state(composer);
@@ -176,7 +183,8 @@
176
183
  if (agent === "claude-code") return state.claudeThinkingOptionId;
177
184
  if (agent === "grok") return state.grokThinkingOptionId;
178
185
  if (agent === "opencode") return state.openCodeThinkingOptionId;
179
- return state.ompThinkingOptionId;
186
+ if (agent === "omp") return state.ompThinkingOptionId;
187
+ return agent === "antigravity" ? state.antigravityThinkingOptionId : void 0;
180
188
  }
181
189
  permissionModeForAgent(composer, agent) {
182
190
  return this.#state(composer).permissionModeByAgent?.[agent];
@@ -196,7 +204,8 @@
196
204
  else if (agent === "deepseek-harness") state.deepSeekHarnessModel = model;
197
205
  else if (agent === "opencode") state.openCodeModel = model;
198
206
  else if (agent === "grok") state.grokModel = model;
199
- else state.ompModel = model;
207
+ else if (agent === "omp") state.ompModel = model;
208
+ else state.antigravityModel = model;
200
209
  return state;
201
210
  }
202
211
  setPiConfiguration(composer, model, thinkingOptionId) {
@@ -229,6 +238,10 @@
229
238
  state.ompThinkingOptionId = thinkingOptionId;
230
239
  } else if (agent === "omp") {
231
240
  delete state.ompThinkingOptionId;
241
+ } else if (agent === "antigravity" && thinkingOptionId) {
242
+ state.antigravityThinkingOptionId = thinkingOptionId;
243
+ } else if (agent === "antigravity") {
244
+ delete state.antigravityThinkingOptionId;
232
245
  }
233
246
  return state;
234
247
  }
@@ -15557,6 +15570,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15557
15570
  // src/assets/grok-agent.png
15558
15571
  var grok_agent_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAEk9JREFUeNrtnQdsHEUXx5fee40xnQiQ6b23IAiJAWHACV10AQHRRG8GDJgSOggEGAEBg6gGhAIBQknoppjeezGE3kybb3+je6f1fVdm93Z2Zy870iPmfN67mffmzSv/98bzLIxZZpml2ad2n7p86vWp36cBnwZ9UjlVpcHCWvUX1q6rsJbNnsvD/4ItPnX41Jcz0Rr1Fda4xSXGt/k0MWdO4sSat6XJ+FafpuaMSJ3gQWuSjG/yaUK+8M4RPGmyzfyxPk3LF9tZgjdjbTG/M1/gzFBn3Mzvzhc1c9QdF/N78sXMLPXkO386o5lnnllT3ZogP/OzRzPNNJOac8451bBhw0qFoDOKtZ8vasZ2Pv/uuOOOaoklltDCUPKesWH8/NzVyxjzfdapcePGqa222kr/XMFFbDIRgDzIkzGC4Yceeqg6/fTTKzG/GCwyCe/mi5ox5u+3337q4YcfVvPNN1851V9KrdUEII/tZ4z5e++9t/rmm2/UeuutV2v3F3MH1bJ6+cJmiPnt7e3q77//VieccIIp84XayglAntLNEPO33XZb9dtvv2nVP9tss5mo/iGp5HJgjnxxM8L8TTbZRKv9adOmqVVWWSXs7hdqCQpAR7642WD+hhtuqD777DPFOProo6MyH+oICkAO48oY8ydNmqTmmmuusKp/CLwsCOCcbgImLBg044wz6kUtpRlmmKH4npJwaqrMX3PNNdXHH3+smf/zzz+HsfqrUbNXQJw2dIQsyFx2zSKLLKKWWWYZtfrqq+uFFFpttdXUsssuqxZeeGE199xz6/cH/z4NgeBzV1hhBfX2228rGeecc04czIfavQLsuKESIsIwmI2RNGbMGHX++eere++9V73wwgvq888/Vz/88IP69ddf1e+//16kX375Rb+Omn3xxRf1+y+44AK1++67q1VXXVU/T55dh+oNxfyll15avfzyy0XmIwiLLbaY1mAxfEaXV8CeN8QZCS244IJq9OjR6tJLL1V9fX2aqeXGf//9p+nff/8tkrxWbvCcV155RV1++eVq1KhR+nPkM23NZ6mlllLPPfec/nz5fvvvv3+cn9nrFQoQMq3iUdXrrLOOuuiii9S77747hIn8/M8//9RNpc9855139Oet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";
15559
15572
 
15573
+ // src/assets/antigravity-agent.svg
15574
+ var antigravity_agent_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -1 28 28"><path d="M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z" fill="url(%23ag)"/><defs><linearGradient id="ag" x1="2" y1="12" x2="22" y2="12" gradientUnits="userSpaceOnUse"><stop stop-color="%234285F4"/><stop offset=".33" stop-color="%23EA4335"/><stop offset=".66" stop-color="%23FBBC04"/><stop offset="1" stop-color="%2334A853"/></linearGradient></defs></svg>%0A';
15575
+
15560
15576
  // src/assets/omp-agent.svg
15561
15577
  var omp_agent_default = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <defs>%0A <linearGradient id="omp-gradient" x1="0" y1="0" x2="1" y2="1">%0A <stop offset="0" stop-color="%23ed4abf" />%0A <stop offset=".5" stop-color="%239b4dff" />%0A <stop offset="1" stop-color="%235ad8e6" />%0A </linearGradient>%0A </defs>%0A <path%0A fill="url(%23omp-gradient)"%0A transform="translate(-14.4 -20.2) scale(1.45)"%0A d="M14 16h36v8H40v32h-8V24h-6v22h-8V24h-4z"%0A />%0A</svg>%0A';
15562
15578
 
@@ -15571,7 +15587,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15571
15587
  "deepseek-harness": "DeepSeek Harness",
15572
15588
  opencode: "OpenCode",
15573
15589
  grok: "Grok",
15574
- omp: "Oh My Pi"
15590
+ omp: "Oh My Pi",
15591
+ antigravity: "Antigravity CLI"
15575
15592
  };
15576
15593
  var PI_PATHS = [
15577
15594
  {
@@ -15646,6 +15663,17 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15646
15663
  image.style.flex = "none";
15647
15664
  return image;
15648
15665
  }
15666
+ if (agent === "antigravity") {
15667
+ const image = ownerDocument.createElement("img");
15668
+ image.src = antigravity_agent_default;
15669
+ image.alt = "";
15670
+ image.draggable = false;
15671
+ image.style.width = `${size}px`;
15672
+ image.style.height = `${size}px`;
15673
+ image.style.objectFit = "contain";
15674
+ image.style.flex = "none";
15675
+ return image;
15676
+ }
15649
15677
  const mark = ownerDocument.createElement("img");
15650
15678
  mark.src = grok_agent_default;
15651
15679
  mark.alt = "";
@@ -15971,7 +15999,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15971
15999
  "deepseek-harness": "https://deepseek-harness.github.io/deepseek-harness/",
15972
16000
  opencode: "https://opencode.ai/docs/",
15973
16001
  grok: "https://grok.com/",
15974
- omp: "https://github.com/can1357/oh-my-pi"
16002
+ omp: "https://github.com/can1357/oh-my-pi",
16003
+ antigravity: "https://antigravity.google/product/antigravity-cli"
15975
16004
  });
15976
16005
  function connectionStatusLabel(availability, messages, hasError = false) {
15977
16006
  if (hasError && availability !== "notInstalled") return messages.connectionStatusError;
@@ -16983,7 +17012,8 @@ ${error51.stderrTail}`] : []
16983
17012
  "deepseek-harness": "https://github.com/deepseek-ai/deepseek-harness",
16984
17013
  opencode: "https://opencode.ai/docs/",
16985
17014
  grok: "https://grok.com/",
16986
- omp: "https://github.com/can1357/oh-my-pi"
17015
+ omp: "https://github.com/can1357/oh-my-pi",
17016
+ antigravity: "https://antigravity.google/product/antigravity-cli"
16987
17017
  };
16988
17018
  var CONTROL_ATTRIBUTE = "data-codexhost-agent-control";
16989
17019
  var AGENT_MENU_WIDTH = 200;
@@ -20065,6 +20095,7 @@ ${error51.stderrTail}`] : []
20065
20095
  if (ownership.harnessId === "opencode") return "opencode";
20066
20096
  if (ownership.harnessId === "grok") return "grok";
20067
20097
  if (ownership.harnessId === "omp") return "omp";
20098
+ if (ownership.harnessId === "antigravity") return "antigravity";
20068
20099
  return null;
20069
20100
  }
20070
20101
  var BrowserSidebarAgentIconRow = class {
@@ -20179,11 +20210,12 @@ ${error51.stderrTail}`] : []
20179
20210
  if (timer !== void 0) clearTimeout(timer);
20180
20211
  ownershipRetryTimers.delete(key);
20181
20212
  ownershipRetryAttempts.delete(key);
20213
+ failed.delete(key);
20182
20214
  provisionalCodex.delete(key);
20183
20215
  };
20184
20216
  const scheduleOwnershipRetry = (hostId, threadId) => {
20185
20217
  const key = ownershipKey(hostId, threadId);
20186
- if (disposed || !provisionalCodex.has(key) || pending.has(key) || ownershipRetryTimers.has(key)) {
20218
+ if (disposed || !failed.has(key) && !provisionalCodex.has(key) || pending.has(key) || ownershipRetryTimers.has(key)) {
20187
20219
  return;
20188
20220
  }
20189
20221
  const attempt = ownershipRetryAttempts.get(key) ?? 0;
@@ -20278,7 +20310,14 @@ ${error51.stderrTail}`] : []
20278
20310
  }
20279
20311
  for (const [hostId, unresolved] of unresolvedByHost) {
20280
20312
  const client = options.getClient(hostId);
20281
- if (!client) continue;
20313
+ if (!client) {
20314
+ for (const threadId of unresolved) {
20315
+ const key = ownershipKey(hostId, threadId);
20316
+ failed.add(key);
20317
+ scheduleOwnershipRetry(hostId, threadId);
20318
+ }
20319
+ continue;
20320
+ }
20282
20321
  const threadIds = [...unresolved];
20283
20322
  for (let index = 0; index < threadIds.length; index += THREAD_OWNERSHIP_LIST_MAX_LENGTH) {
20284
20323
  requestOwnership(
@@ -20294,13 +20333,11 @@ ${error51.stderrTail}`] : []
20294
20333
  return {
20295
20334
  refresh() {
20296
20335
  failed.clear();
20297
- for (const key of provisionalCodex) {
20298
- const timer = ownershipRetryTimers.get(key);
20299
- if (timer !== void 0) clearTimeout(timer);
20300
- ownershipRetryTimers.delete(key);
20301
- ownershipRetryAttempts.delete(key);
20302
- ownershipByThread.delete(key);
20303
- }
20336
+ for (const timer of ownershipRetryTimers.values()) clearTimeout(timer);
20337
+ ownershipRetryTimers.clear();
20338
+ ownershipRetryAttempts.clear();
20339
+ for (const key of provisionalCodex) ownershipByThread.delete(key);
20340
+ provisionalCodex.clear();
20304
20341
  scheduleScan();
20305
20342
  },
20306
20343
  dispose() {
@@ -20656,6 +20693,8 @@ ${error51.stderrTail}`] : []
20656
20693
  var GROK_TRANSPORT_MODEL_PREFIX = `${GROK_TRANSPORT_MODEL_ID}@`;
20657
20694
  var OMP_TRANSPORT_MODEL_ID = "codexhost/omp-native";
20658
20695
  var OMP_TRANSPORT_MODEL_PREFIX = `${OMP_TRANSPORT_MODEL_ID}@`;
20696
+ var ANTIGRAVITY_TRANSPORT_MODEL_ID = "codexhost/antigravity-native";
20697
+ var ANTIGRAVITY_TRANSPORT_MODEL_PREFIX = `${ANTIGRAVITY_TRANSPORT_MODEL_ID}@`;
20659
20698
  function transitionRendererAdapterStatus(current, next, publish) {
20660
20699
  if (current.state === next.state && current.reason === next.reason && current.hook === next.hook) {
20661
20700
  return false;
@@ -20675,6 +20714,7 @@ ${error51.stderrTail}`] : []
20675
20714
  if (agent === "opencode") return OPENCODE_TRANSPORT_MODEL_ID;
20676
20715
  if (agent === "grok") return GROK_TRANSPORT_MODEL_ID;
20677
20716
  if (agent === "omp") return OMP_TRANSPORT_MODEL_ID;
20717
+ if (agent === "antigravity") return ANTIGRAVITY_TRANSPORT_MODEL_ID;
20678
20718
  return null;
20679
20719
  }
20680
20720
  function isRecord5(value) {
@@ -20689,15 +20729,36 @@ ${error51.stderrTail}`] : []
20689
20729
  const parsedThinking = thinkingOptionId ? harnessThinkingOptionIdSchema.parse(thinkingOptionId) : void 0;
20690
20730
  return `${PI_TRANSPORT_MODEL_PREFIX}${parsedModel.id}${parsedThinking ? `@${parsedThinking}` : ""}`;
20691
20731
  }
20692
- function ompTransportModelId(model, thinkingOptionId) {
20732
+ function ompTransportModelId(model, thinkingOptionId, permissionModeId) {
20693
20733
  if (!model) {
20694
- if (thinkingOptionId) throw new Error("OMP transport Thinking requires a Model Ref");
20734
+ if (permissionModeId || thinkingOptionId) {
20735
+ throw new Error("OMP transport configuration requires a Model Ref");
20736
+ }
20695
20737
  return OMP_TRANSPORT_MODEL_ID;
20696
20738
  }
20697
20739
  const parsedModel = harnessModelRefSchema.parse(model);
20740
+ const parsedPermissionMode = permissionModeId ? harnessPermissionModeIdSchema.parse(permissionModeId) : void 0;
20698
20741
  const parsedThinking = thinkingOptionId ? harnessThinkingOptionIdSchema.parse(thinkingOptionId) : void 0;
20742
+ if (parsedPermissionMode) {
20743
+ return `${OMP_TRANSPORT_MODEL_PREFIX}${parsedModel.id}@${parsedPermissionMode}@${parsedThinking ?? ""}`;
20744
+ }
20699
20745
  return `${OMP_TRANSPORT_MODEL_PREFIX}${parsedModel.id}${parsedThinking ? `@${parsedThinking}` : ""}`;
20700
20746
  }
20747
+ function antigravityTransportModelId(model, permissionModeId, thinkingOptionId) {
20748
+ if (!model) {
20749
+ if (permissionModeId || thinkingOptionId) {
20750
+ throw new Error("Antigravity transport configuration requires a Model Ref");
20751
+ }
20752
+ return ANTIGRAVITY_TRANSPORT_MODEL_ID;
20753
+ }
20754
+ const parsedModel = harnessModelRefSchema.parse(model);
20755
+ const parsedPermission = permissionModeId ? harnessPermissionModeIdSchema.parse(permissionModeId) : void 0;
20756
+ const parsedThinking = thinkingOptionId ? harnessThinkingOptionIdSchema.parse(thinkingOptionId) : void 0;
20757
+ if (parsedThinking) {
20758
+ return `${ANTIGRAVITY_TRANSPORT_MODEL_PREFIX}${parsedModel.id}@${parsedPermission ?? ""}@${parsedThinking}`;
20759
+ }
20760
+ return `${ANTIGRAVITY_TRANSPORT_MODEL_PREFIX}${parsedModel.id}${parsedPermission ? `@${parsedPermission}` : ""}`;
20761
+ }
20701
20762
  function openCodeTransportModelId(model, permissionModeId, thinkingOptionId) {
20702
20763
  if (!model) {
20703
20764
  if (permissionModeId || thinkingOptionId) {
@@ -20853,14 +20914,42 @@ ${error51.stderrTail}`] : []
20853
20914
  if (value === OMP_TRANSPORT_MODEL_ID) return {};
20854
20915
  if (typeof value !== "string" || !value.startsWith(OMP_TRANSPORT_MODEL_PREFIX)) return null;
20855
20916
  const components = value.slice(OMP_TRANSPORT_MODEL_PREFIX.length).split("@");
20856
- if (components.length < 1 || components.length > 2) return null;
20857
- const [modelId, thinkingOptionId] = components;
20858
- if (components.length === 2 && !thinkingOptionId) return null;
20917
+ if (components.length < 1 || components.length > 3) return null;
20918
+ const [modelId, permissionOrThinkingId, thinkingOptionId] = components;
20919
+ if (components.length === 2 && !permissionOrThinkingId) return null;
20920
+ if (components.length === 3 && !permissionOrThinkingId) return null;
20859
20921
  const model = harnessModelRefSchema.safeParse({ id: modelId });
20860
20922
  if (!model.success) return null;
20923
+ const permissionMode = components.length === 3 ? harnessPermissionModeIdSchema.safeParse(permissionOrThinkingId) : null;
20924
+ if (permissionMode && !permissionMode.success) return null;
20925
+ const thinking = components.length === 2 ? harnessThinkingOptionIdSchema.safeParse(permissionOrThinkingId) : thinkingOptionId ? harnessThinkingOptionIdSchema.safeParse(thinkingOptionId) : null;
20926
+ if (thinking && !thinking.success) return null;
20927
+ return {
20928
+ model: model.data,
20929
+ ...permissionMode?.success ? { permissionModeId: permissionMode.data } : {},
20930
+ ...thinking?.success ? { thinkingOptionId: thinking.data } : {}
20931
+ };
20932
+ }
20933
+ function decodeAntigravityTransportModelId(value) {
20934
+ if (value === ANTIGRAVITY_TRANSPORT_MODEL_ID) return {};
20935
+ if (typeof value !== "string" || !value.startsWith(ANTIGRAVITY_TRANSPORT_MODEL_PREFIX)) {
20936
+ return null;
20937
+ }
20938
+ const components = value.slice(ANTIGRAVITY_TRANSPORT_MODEL_PREFIX.length).split("@");
20939
+ if (components.length < 1 || components.length > 3) return null;
20940
+ const [modelId, permissionModeId, thinkingOptionId] = components;
20941
+ if (components.length === 2 && !permissionModeId) return null;
20942
+ if (components.length === 3 && !thinkingOptionId) return null;
20943
+ const model = harnessModelRefSchema.safeParse({ id: modelId });
20944
+ const permission = permissionModeId ? harnessPermissionModeIdSchema.safeParse(permissionModeId) : null;
20945
+ if (!model.success || permission && !permission.success) return null;
20861
20946
  const thinking = thinkingOptionId ? harnessThinkingOptionIdSchema.safeParse(thinkingOptionId) : null;
20862
20947
  if (thinking && !thinking.success) return null;
20863
- return { model: model.data, ...thinking?.success ? { thinkingOptionId: thinking.data } : {} };
20948
+ return {
20949
+ model: model.data,
20950
+ ...permission?.success ? { permissionModeId: permission.data } : {},
20951
+ ...thinking?.success ? { thinkingOptionId: thinking.data } : {}
20952
+ };
20864
20953
  }
20865
20954
  function threadIdFromComposerModelTarget(target) {
20866
20955
  if (target?.[0] !== "conversation" || typeof target[1] !== "string" || target[1].trim().length === 0) {
@@ -20997,9 +21086,6 @@ ${error51.stderrTail}`] : []
20997
21086
  if (draftIds.size !== 1) return null;
20998
21087
  return ["default", draftIds.values().next().value];
20999
21088
  }
21000
- function isMainProcessTitlePolicyReady(value) {
21001
- return isRecord5(value) && value.state === "ready";
21002
- }
21003
21089
  function isDraftPrewarmPolicyReady(value) {
21004
21090
  return isRecord5(value) && value.state === "ready" && typeof value.hostId === "string" && value.hostId.length > 0 && typeof value.select === "function" && typeof value.clear === "function";
21005
21091
  }
@@ -21071,7 +21157,7 @@ ${error51.stderrTail}`] : []
21071
21157
  }
21072
21158
  }
21073
21159
  function modelSelectionForAgent(officialSelection, reasoningEffort, agent, model, thinkingOptionId, permissionModeId) {
21074
- const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model, permissionModeId) : agent === "opencode" ? openCodeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "omp" ? ompTransportModelId(model, thinkingOptionId) : transportModelIdForAgent(agent);
21160
+ const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model, permissionModeId) : agent === "opencode" ? openCodeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "omp" ? ompTransportModelId(model, thinkingOptionId, permissionModeId) : agent === "antigravity" ? antigravityTransportModelId(model, permissionModeId, thinkingOptionId) : transportModelIdForAgent(agent);
21075
21161
  return transportModelId ? { model: transportModelId, reasoningEffort } : officialSelection;
21076
21162
  }
21077
21163
  function installCurrentRendererAdapter() {
@@ -21089,13 +21175,6 @@ ${error51.stderrTail}`] : []
21089
21175
  window.dispatchEvent(new CustomEvent("codexhost:renderer-adapter-status"));
21090
21176
  });
21091
21177
  };
21092
- const unsupportedResult = () => ({
21093
- status: liveStatus,
21094
- modelControl: null,
21095
- applyAgent: () => false,
21096
- dispose() {
21097
- }
21098
- });
21099
21178
  const usageSubscription = createThreadUsageSubscriptionRelay();
21100
21179
  const requestRouteResolver = createRendererRequestRouteResolver(
21101
21180
  () => window.__codexhostDraftPrewarmPolicyV1,
@@ -21157,10 +21236,6 @@ ${error51.stderrTail}`] : []
21157
21236
  startUpdate: () => currentModelClient().startUpdate(),
21158
21237
  readUpdateStatus: () => currentModelClient().readUpdateStatus()
21159
21238
  });
21160
- if (!isMainProcessTitlePolicyReady(window.__codexhostMainProcessTitlePolicyV1)) {
21161
- updateStatus("unsupported", "title-policy-unavailable", null);
21162
- return unsupportedResult();
21163
- }
21164
21239
  const forkControl = installRendererForkControl({
21165
21240
  getClient: () => modelControl,
21166
21241
  reportError: (error51) => {
@@ -23006,7 +23081,8 @@ ${error51.stderrTail}`] : []
23006
23081
  "deepseek-harness": harnessIdSchema.parse("deepseek-harness"),
23007
23082
  opencode: harnessIdSchema.parse("opencode"),
23008
23083
  grok: harnessIdSchema.parse("grok"),
23009
- omp: harnessIdSchema.parse("omp")
23084
+ omp: harnessIdSchema.parse("omp"),
23085
+ antigravity: harnessIdSchema.parse("antigravity")
23010
23086
  };
23011
23087
  var externalAgents = [
23012
23088
  "pi",
@@ -23014,7 +23090,8 @@ ${error51.stderrTail}`] : []
23014
23090
  "deepseek-harness",
23015
23091
  "opencode",
23016
23092
  "grok",
23017
- "omp"
23093
+ "omp",
23094
+ "antigravity"
23018
23095
  ];
23019
23096
  function isRetryableHarnessAvailability(availability, error51) {
23020
23097
  return availability !== void 0 && availability !== "ready" && availability !== "notInstalled" && error51?.retryable === true;
@@ -23115,10 +23192,12 @@ ${error51.stderrTail}`] : []
23115
23192
  if (!transportSelection) throw new Error("OMP Thread reported an incompatible transport Model");
23116
23193
  const model = inspection.effectiveModel ?? transportSelection.model;
23117
23194
  const thinkingOptionId = selectableThinkingOptionId(inspection) ?? transportSelection.thinkingOptionId;
23195
+ const permissionModeId = inspection.effectivePermissionModeId ?? transportSelection.permissionModeId;
23118
23196
  return {
23119
23197
  agent: "omp",
23120
23198
  ...model ? { model } : {},
23121
- ...thinkingOptionId ? { thinkingOptionId } : {}
23199
+ ...thinkingOptionId ? { thinkingOptionId } : {},
23200
+ ...permissionModeId ? { permissionModeId } : {}
23122
23201
  };
23123
23202
  }
23124
23203
  if (inspection.harnessId === "claude-code") {
@@ -23164,6 +23243,21 @@ ${error51.stderrTail}`] : []
23164
23243
  ...permissionModeId ? { permissionModeId } : {}
23165
23244
  };
23166
23245
  }
23246
+ if (inspection.harnessId === "antigravity") {
23247
+ const transportSelection = decodeAntigravityTransportModelId(inspection.transportModelId);
23248
+ if (!transportSelection) {
23249
+ throw new Error("Antigravity Thread reported an incompatible transport Model");
23250
+ }
23251
+ const model = inspection.effectiveModel ?? transportSelection.model;
23252
+ const thinkingOptionId = selectableThinkingOptionId(inspection) ?? transportSelection.thinkingOptionId;
23253
+ const permissionModeId = inspection.effectivePermissionModeId ?? transportSelection.permissionModeId;
23254
+ return {
23255
+ agent: "antigravity",
23256
+ ...model ? { model } : {},
23257
+ ...thinkingOptionId ? { thinkingOptionId } : {},
23258
+ ...permissionModeId ? { permissionModeId } : {}
23259
+ };
23260
+ }
23167
23261
  throw new Error("Thread owner is not a Renderer Agent");
23168
23262
  }
23169
23263
  function isOwnershipSubmissionBlocked(status) {
@@ -23290,7 +23384,8 @@ ${error51.stderrTail}`] : []
23290
23384
  "deepseek-harness": void 0,
23291
23385
  opencode: void 0,
23292
23386
  grok: void 0,
23293
- omp: void 0
23387
+ omp: void 0,
23388
+ antigravity: void 0
23294
23389
  },
23295
23390
  requestGeneration: 0,
23296
23391
  request: null,
package/bin/codexhost CHANGED
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codexhost/cli-darwin-x64",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Run Pi and Claude Code as first-class external harnesses inside Codex Desktop.",
5
5
  "type": "module",
6
6
  "files": [