@codexhost/cli-darwin-x64 0.3.3 → 0.3.4
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.md +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/desktop-controller.mjs +1 -1
- package/app/host-runtime.mjs +5088 -1181
- package/app/renderer-extension.js +117 -63
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"pi",
|
|
13
13
|
"claude-code",
|
|
14
14
|
"deepseek-harness",
|
|
15
|
-
"grok"
|
|
15
|
+
"grok",
|
|
16
|
+
"omp"
|
|
16
17
|
];
|
|
17
18
|
var DEFAULT_RENDERER_AGENTS = KNOWN_RENDERER_AGENTS;
|
|
18
19
|
function defaultIdFactory(sequence) {
|
|
@@ -123,6 +124,7 @@
|
|
|
123
124
|
if (agent === "claude-code" && model) state.claudeModel = model;
|
|
124
125
|
if (agent === "deepseek-harness" && model) state.deepSeekHarnessModel = model;
|
|
125
126
|
if (agent === "grok" && model) state.grokModel = model;
|
|
127
|
+
if (agent === "omp" && model) state.ompModel = model;
|
|
126
128
|
if (agent === "pi" && thinkingOptionId) state.piThinkingOptionId = thinkingOptionId;
|
|
127
129
|
else if (agent === "pi") delete state.piThinkingOptionId;
|
|
128
130
|
if (agent === "claude-code" && thinkingOptionId) {
|
|
@@ -130,9 +132,11 @@
|
|
|
130
132
|
} else if (agent === "claude-code") delete state.claudeThinkingOptionId;
|
|
131
133
|
if (agent === "grok" && thinkingOptionId) state.grokThinkingOptionId = thinkingOptionId;
|
|
132
134
|
else if (agent === "grok") delete state.grokThinkingOptionId;
|
|
135
|
+
if (agent === "omp" && thinkingOptionId) state.ompThinkingOptionId = thinkingOptionId;
|
|
136
|
+
else if (agent === "omp") delete state.ompThinkingOptionId;
|
|
133
137
|
if (agent !== "codex") {
|
|
134
138
|
const permissionModeByAgent = {};
|
|
135
|
-
for (const candidate of ["pi", "claude-code", "deepseek-harness", "grok"]) {
|
|
139
|
+
for (const candidate of ["pi", "claude-code", "deepseek-harness", "grok", "omp"]) {
|
|
136
140
|
const current = state.permissionModeByAgent?.[candidate];
|
|
137
141
|
if (candidate !== agent && current) permissionModeByAgent[candidate] = current;
|
|
138
142
|
}
|
|
@@ -150,13 +154,15 @@
|
|
|
150
154
|
if (agent === "pi") return state.piModel;
|
|
151
155
|
if (agent === "claude-code") return state.claudeModel;
|
|
152
156
|
if (agent === "deepseek-harness") return state.deepSeekHarnessModel;
|
|
153
|
-
|
|
157
|
+
if (agent === "grok") return state.grokModel;
|
|
158
|
+
return state.ompModel;
|
|
154
159
|
}
|
|
155
160
|
thinkingOptionForAgent(composer, agent) {
|
|
156
161
|
const state = this.#state(composer);
|
|
157
162
|
if (agent === "pi") return state.piThinkingOptionId;
|
|
158
163
|
if (agent === "claude-code") return state.claudeThinkingOptionId;
|
|
159
|
-
|
|
164
|
+
if (agent === "grok") return state.grokThinkingOptionId;
|
|
165
|
+
return state.ompThinkingOptionId;
|
|
160
166
|
}
|
|
161
167
|
permissionModeForAgent(composer, agent) {
|
|
162
168
|
return this.#state(composer).permissionModeByAgent?.[agent];
|
|
@@ -174,7 +180,8 @@
|
|
|
174
180
|
if (agent === "pi") state.piModel = model;
|
|
175
181
|
else if (agent === "claude-code") state.claudeModel = model;
|
|
176
182
|
else if (agent === "deepseek-harness") state.deepSeekHarnessModel = model;
|
|
177
|
-
else state.grokModel = model;
|
|
183
|
+
else if (agent === "grok") state.grokModel = model;
|
|
184
|
+
else state.ompModel = model;
|
|
178
185
|
return state;
|
|
179
186
|
}
|
|
180
187
|
setPiConfiguration(composer, model, thinkingOptionId) {
|
|
@@ -199,6 +206,10 @@
|
|
|
199
206
|
state.grokThinkingOptionId = thinkingOptionId;
|
|
200
207
|
} else if (agent === "grok") {
|
|
201
208
|
delete state.grokThinkingOptionId;
|
|
209
|
+
} else if (agent === "omp" && thinkingOptionId) {
|
|
210
|
+
state.ompThinkingOptionId = thinkingOptionId;
|
|
211
|
+
} else if (agent === "omp") {
|
|
212
|
+
delete state.ompThinkingOptionId;
|
|
202
213
|
}
|
|
203
214
|
return state;
|
|
204
215
|
}
|
|
@@ -15416,13 +15427,17 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15416
15427
|
// src/assets/grok-agent.png
|
|
15417
15428
|
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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";
|
|
15418
15429
|
|
|
15430
|
+
// src/assets/omp-agent.svg
|
|
15431
|
+
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';
|
|
15432
|
+
|
|
15419
15433
|
// src/renderer-agent-icon.ts
|
|
15420
15434
|
var RENDERER_AGENT_LABELS = {
|
|
15421
15435
|
codex: "Codex",
|
|
15422
15436
|
pi: "Pi",
|
|
15423
15437
|
"claude-code": "Claude Code",
|
|
15424
15438
|
"deepseek-harness": "DeepSeek Harness",
|
|
15425
|
-
grok: "Grok"
|
|
15439
|
+
grok: "Grok",
|
|
15440
|
+
omp: "Oh My Pi"
|
|
15426
15441
|
};
|
|
15427
15442
|
var PI_PATHS = [
|
|
15428
15443
|
{
|
|
@@ -15474,6 +15489,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15474
15489
|
"0 0 23.16 17.04"
|
|
15475
15490
|
);
|
|
15476
15491
|
}
|
|
15492
|
+
if (agent === "omp") {
|
|
15493
|
+
const image = ownerDocument.createElement("img");
|
|
15494
|
+
image.src = omp_agent_default;
|
|
15495
|
+
image.alt = "";
|
|
15496
|
+
image.draggable = false;
|
|
15497
|
+
image.style.width = `${size}px`;
|
|
15498
|
+
image.style.height = `${size}px`;
|
|
15499
|
+
image.style.objectFit = "contain";
|
|
15500
|
+
image.style.borderRadius = "22.37%";
|
|
15501
|
+
image.style.flex = "none";
|
|
15502
|
+
return image;
|
|
15503
|
+
}
|
|
15477
15504
|
const mark = ownerDocument.createElement("img");
|
|
15478
15505
|
mark.src = grok_agent_default;
|
|
15479
15506
|
mark.alt = "";
|
|
@@ -15491,7 +15518,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15491
15518
|
pi: "https://pi.dev/",
|
|
15492
15519
|
"claude-code": "https://code.claude.com/docs/en/quickstart",
|
|
15493
15520
|
"deepseek-harness": "https://github.com/deepseek-ai/deepseek-harness",
|
|
15494
|
-
grok: "https://grok.com/"
|
|
15521
|
+
grok: "https://grok.com/",
|
|
15522
|
+
omp: "https://github.com/can1357/oh-my-pi"
|
|
15495
15523
|
};
|
|
15496
15524
|
var CONTROL_ATTRIBUTE = "data-codexhost-agent-control";
|
|
15497
15525
|
var AGENT_MENU_WIDTH = 200;
|
|
@@ -17971,7 +17999,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17971
17999
|
function usagePlacementAnchor(control) {
|
|
17972
18000
|
const context = control.nativeContextUsageControl?.element;
|
|
17973
18001
|
const contextWrapper = context?.parentElement;
|
|
17974
|
-
|
|
18002
|
+
if (contextWrapper?.parentElement) return contextWrapper;
|
|
18003
|
+
const modelRoot = control.modelPicker?.root;
|
|
18004
|
+
return modelRoot?.parentElement ? modelRoot : null;
|
|
17975
18005
|
}
|
|
17976
18006
|
function creditsPlacementAnchor(control) {
|
|
17977
18007
|
const root = control.permissionModePicker?.root;
|
|
@@ -18219,6 +18249,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18219
18249
|
if (ownership.harnessId === "claude-code") return "claude-code";
|
|
18220
18250
|
if (ownership.harnessId === "deepseek-harness") return "deepseek-harness";
|
|
18221
18251
|
if (ownership.harnessId === "grok") return "grok";
|
|
18252
|
+
if (ownership.harnessId === "omp") return "omp";
|
|
18222
18253
|
return null;
|
|
18223
18254
|
}
|
|
18224
18255
|
var BrowserSidebarAgentIconRow = class {
|
|
@@ -18594,7 +18625,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18594
18625
|
pending.add(key);
|
|
18595
18626
|
void client.inspectThread({ threadId: target.threadId }).then(async (inspection) => {
|
|
18596
18627
|
if (disposed) return;
|
|
18597
|
-
if (inspection.owner === "codex" || !inspection.history.fork || !target.isProjectlessConversation
|
|
18628
|
+
if (inspection.owner === "codex" || !inspection.history.fork || !target.isProjectlessConversation) {
|
|
18598
18629
|
dom.replay(target);
|
|
18599
18630
|
return;
|
|
18600
18631
|
}
|
|
@@ -18627,6 +18658,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18627
18658
|
var THREAD_PERMISSION_MODE_SELECT_METHOD = "codexhost/thread/permission-mode/select";
|
|
18628
18659
|
var THREAD_OWNERSHIP_LIST_METHOD = "codexhost/thread/ownership/list";
|
|
18629
18660
|
var THREAD_USAGE_INSPECT_METHOD = "codexhost/thread/usage/inspect";
|
|
18661
|
+
var THREAD_USAGE_UPDATED_METHOD = "codexhost/thread/usage/updated";
|
|
18630
18662
|
var THREAD_TOKEN_USAGE_UPDATED_METHOD = "thread/tokenUsage/updated";
|
|
18631
18663
|
var UPDATE_CHECK_METHOD = "codexhost/update/check";
|
|
18632
18664
|
var UPDATE_START_METHOD = "codexhost/update/start";
|
|
@@ -18635,7 +18667,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18635
18667
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
18636
18668
|
}
|
|
18637
18669
|
function notifiedThreadId(notification) {
|
|
18638
|
-
if (!isRecord4(notification) || notification.method !== THREAD_TOKEN_USAGE_UPDATED_METHOD) {
|
|
18670
|
+
if (!isRecord4(notification) || notification.method !== THREAD_TOKEN_USAGE_UPDATED_METHOD && notification.method !== THREAD_USAGE_UPDATED_METHOD) {
|
|
18639
18671
|
return null;
|
|
18640
18672
|
}
|
|
18641
18673
|
const params = notification.params;
|
|
@@ -18751,7 +18783,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18751
18783
|
let disposed = false;
|
|
18752
18784
|
const generations = /* @__PURE__ */ new Map();
|
|
18753
18785
|
const removeNotificationCallback = notifications.addNotificationCallback(
|
|
18754
|
-
THREAD_TOKEN_USAGE_UPDATED_METHOD,
|
|
18786
|
+
[THREAD_TOKEN_USAGE_UPDATED_METHOD, THREAD_USAGE_UPDATED_METHOD],
|
|
18755
18787
|
(notification) => {
|
|
18756
18788
|
const threadId = notifiedThreadId(notification);
|
|
18757
18789
|
if (!threadId) return;
|
|
@@ -18805,6 +18837,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18805
18837
|
var DEEPSEEK_HARNESS_TRANSPORT_MODEL_PREFIX = `${DEEPSEEK_HARNESS_TRANSPORT_MODEL_ID}@`;
|
|
18806
18838
|
var GROK_TRANSPORT_MODEL_ID = "codexhost/grok-native";
|
|
18807
18839
|
var GROK_TRANSPORT_MODEL_PREFIX = `${GROK_TRANSPORT_MODEL_ID}@`;
|
|
18840
|
+
var OMP_TRANSPORT_MODEL_ID = "codexhost/omp-native";
|
|
18841
|
+
var OMP_TRANSPORT_MODEL_PREFIX = `${OMP_TRANSPORT_MODEL_ID}@`;
|
|
18808
18842
|
function transitionRendererAdapterStatus(current, next, publish) {
|
|
18809
18843
|
if (current.state === next.state && current.reason === next.reason && current.hook === next.hook) {
|
|
18810
18844
|
return false;
|
|
@@ -18822,6 +18856,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18822
18856
|
if (agent === "claude-code") return CLAUDE_CODE_TRANSPORT_MODEL_ID;
|
|
18823
18857
|
if (agent === "deepseek-harness") return DEEPSEEK_HARNESS_TRANSPORT_MODEL_ID;
|
|
18824
18858
|
if (agent === "grok") return GROK_TRANSPORT_MODEL_ID;
|
|
18859
|
+
if (agent === "omp") return OMP_TRANSPORT_MODEL_ID;
|
|
18825
18860
|
return null;
|
|
18826
18861
|
}
|
|
18827
18862
|
function isRecord5(value) {
|
|
@@ -18836,6 +18871,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18836
18871
|
const parsedThinking = thinkingOptionId ? harnessThinkingOptionIdSchema.parse(thinkingOptionId) : void 0;
|
|
18837
18872
|
return `${PI_TRANSPORT_MODEL_PREFIX}${parsedModel.id}${parsedThinking ? `@${parsedThinking}` : ""}`;
|
|
18838
18873
|
}
|
|
18874
|
+
function ompTransportModelId(model, thinkingOptionId) {
|
|
18875
|
+
if (!model) {
|
|
18876
|
+
if (thinkingOptionId) throw new Error("OMP transport Thinking requires a Model Ref");
|
|
18877
|
+
return OMP_TRANSPORT_MODEL_ID;
|
|
18878
|
+
}
|
|
18879
|
+
const parsedModel = harnessModelRefSchema.parse(model);
|
|
18880
|
+
const parsedThinking = thinkingOptionId ? harnessThinkingOptionIdSchema.parse(thinkingOptionId) : void 0;
|
|
18881
|
+
return `${OMP_TRANSPORT_MODEL_PREFIX}${parsedModel.id}${parsedThinking ? `@${parsedThinking}` : ""}`;
|
|
18882
|
+
}
|
|
18839
18883
|
function claudeTransportModelId(model, permissionModeId, thinkingOptionId) {
|
|
18840
18884
|
if (!model) {
|
|
18841
18885
|
if (permissionModeId || thinkingOptionId) {
|
|
@@ -18938,6 +18982,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18938
18982
|
...thinking?.success ? { thinkingOptionId: thinking.data } : {}
|
|
18939
18983
|
};
|
|
18940
18984
|
}
|
|
18985
|
+
function decodeOmpTransportModelId(value) {
|
|
18986
|
+
if (value === OMP_TRANSPORT_MODEL_ID) return {};
|
|
18987
|
+
if (typeof value !== "string" || !value.startsWith(OMP_TRANSPORT_MODEL_PREFIX)) return null;
|
|
18988
|
+
const components = value.slice(OMP_TRANSPORT_MODEL_PREFIX.length).split("@");
|
|
18989
|
+
if (components.length < 1 || components.length > 2) return null;
|
|
18990
|
+
const [modelId, thinkingOptionId] = components;
|
|
18991
|
+
if (components.length === 2 && !thinkingOptionId) return null;
|
|
18992
|
+
const model = harnessModelRefSchema.safeParse({ id: modelId });
|
|
18993
|
+
if (!model.success) return null;
|
|
18994
|
+
const thinking = thinkingOptionId ? harnessThinkingOptionIdSchema.safeParse(thinkingOptionId) : null;
|
|
18995
|
+
if (thinking && !thinking.success) return null;
|
|
18996
|
+
return { model: model.data, ...thinking?.success ? { thinkingOptionId: thinking.data } : {} };
|
|
18997
|
+
}
|
|
18941
18998
|
function threadIdFromComposerModelTarget(target) {
|
|
18942
18999
|
if (target?.[0] !== "conversation" || typeof target[1] !== "string" || target[1].trim().length === 0) {
|
|
18943
19000
|
return null;
|
|
@@ -19124,7 +19181,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19124
19181
|
}
|
|
19125
19182
|
}
|
|
19126
19183
|
function modelSelectionForAgent(officialSelection, reasoningEffort, agent, model, thinkingOptionId, permissionModeId) {
|
|
19127
|
-
const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : transportModelIdForAgent(agent);
|
|
19184
|
+
const transportModelId = agent === "pi" ? piTransportModelId(model, thinkingOptionId) : agent === "claude-code" ? claudeTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "deepseek-harness" ? deepSeekHarnessTransportModelId(model) : agent === "grok" ? grokTransportModelId(model, permissionModeId, thinkingOptionId) : agent === "omp" ? ompTransportModelId(model, thinkingOptionId) : transportModelIdForAgent(agent);
|
|
19128
19185
|
return transportModelId ? { model: transportModelId, reasoningEffort } : officialSelection;
|
|
19129
19186
|
}
|
|
19130
19187
|
function installCurrentRendererAdapter() {
|
|
@@ -21147,7 +21204,8 @@ ${error51.stderrTail}`] : []
|
|
|
21147
21204
|
|
|
21148
21205
|
// src/settings/trigger.ts
|
|
21149
21206
|
var SETTINGS_TRIGGER_ATTRIBUTE = "data-codexhost-settings-trigger";
|
|
21150
|
-
var
|
|
21207
|
+
var SETTINGS_APPLICATION_HEADER_SELECTOR = 'header[data-pip-obstacle="app-shell-header"]';
|
|
21208
|
+
var SETTINGS_HEADER_SLOT_SELECTOR = ':scope > [data-test-id="header-shell-slot"]';
|
|
21151
21209
|
function measuredBounds(element) {
|
|
21152
21210
|
const bounds = element.getBoundingClientRect();
|
|
21153
21211
|
return {
|
|
@@ -21159,38 +21217,16 @@ ${error51.stderrTail}`] : []
|
|
|
21159
21217
|
height: bounds.height
|
|
21160
21218
|
};
|
|
21161
21219
|
}
|
|
21162
|
-
function isVisibleButton(button) {
|
|
21163
|
-
const bounds = button.getBoundingClientRect();
|
|
21164
|
-
return bounds.width > 0 && bounds.height > 0;
|
|
21165
|
-
}
|
|
21166
|
-
function selectRendererSettingsHeaderSlot(header, candidates) {
|
|
21167
|
-
const midpoint = header.left + header.width / 2;
|
|
21168
|
-
const maximumWidth = Math.min(320, header.width / 2);
|
|
21169
|
-
const eligible = candidates.filter(
|
|
21170
|
-
({ bounds, visibleButtonCount, structuralActionGroup }) => (visibleButtonCount > 1 || structuralActionGroup === true) && bounds.width >= 0 && bounds.height >= 0 && bounds.width <= maximumWidth && bounds.left >= midpoint && bounds.right <= header.right + 1 && bounds.top >= header.top - 1 && bounds.bottom <= header.bottom + 1
|
|
21171
|
-
);
|
|
21172
|
-
eligible.sort(
|
|
21173
|
-
(left, right) => Math.abs(header.right - left.bounds.right) - Math.abs(header.right - right.bounds.right) || right.visibleButtonCount - left.visibleButtonCount || left.bounds.left - right.bounds.left
|
|
21174
|
-
);
|
|
21175
|
-
return eligible[0]?.value ?? null;
|
|
21176
|
-
}
|
|
21177
21220
|
function findRendererSettingsHeaderInsertionPoint(ownerDocument) {
|
|
21178
|
-
const
|
|
21179
|
-
if (!
|
|
21180
|
-
const
|
|
21181
|
-
|
|
21182
|
-
const
|
|
21183
|
-
(slot)
|
|
21184
|
-
|
|
21185
|
-
|
|
21186
|
-
|
|
21187
|
-
isVisibleButton
|
|
21188
|
-
).length,
|
|
21189
|
-
structuralActionGroup: slot.parentElement?.lastElementChild === slot && view?.getComputedStyle(slot.parentElement).display === "grid"
|
|
21190
|
-
})
|
|
21191
|
-
);
|
|
21192
|
-
const actionGroup = selectRendererSettingsHeaderSlot(surfaceBounds, measuredSlots);
|
|
21193
|
-
return actionGroup ? { parent: actionGroup, before: actionGroup.firstChild } : null;
|
|
21221
|
+
const header = ownerDocument.querySelector(SETTINGS_APPLICATION_HEADER_SELECTOR);
|
|
21222
|
+
if (!header) return null;
|
|
21223
|
+
const headerBounds = measuredBounds(header);
|
|
21224
|
+
if (headerBounds.width <= 0 || headerBounds.height <= 0) return null;
|
|
21225
|
+
const endSlot = [...header.querySelectorAll(SETTINGS_HEADER_SLOT_SELECTOR)].filter((slot) => {
|
|
21226
|
+
const bounds = measuredBounds(slot);
|
|
21227
|
+
return bounds.width > 0 && bounds.height > 0;
|
|
21228
|
+
}).toSorted((left, right) => measuredBounds(right).left - measuredBounds(left).left)[0];
|
|
21229
|
+
return endSlot ? { parent: header, before: endSlot } : null;
|
|
21194
21230
|
}
|
|
21195
21231
|
function mountRendererSettingsTrigger(triggerId, available, onOpen, ownerDocument = document, messages = DEFAULT_RENDERER_SETTINGS_MESSAGES) {
|
|
21196
21232
|
const root = ownerDocument.createElement("div");
|
|
@@ -21318,23 +21354,27 @@ ${error51.stderrTail}`] : []
|
|
|
21318
21354
|
let disposed = false;
|
|
21319
21355
|
const refresh = () => {
|
|
21320
21356
|
if (disposed) return false;
|
|
21321
|
-
if (trigger?.root.isConnected) return true;
|
|
21322
|
-
trigger?.dispose();
|
|
21323
|
-
trigger = null;
|
|
21324
|
-
for (const duplicate of ownerDocument.querySelectorAll(`[${SETTINGS_TRIGGER_ATTRIBUTE}]`)) {
|
|
21325
|
-
duplicate.remove();
|
|
21326
|
-
}
|
|
21327
21357
|
const insertionPoint = findRendererSettingsHeaderInsertionPoint(ownerDocument);
|
|
21328
|
-
if (!insertionPoint)
|
|
21329
|
-
|
|
21330
|
-
|
|
21331
|
-
|
|
21332
|
-
|
|
21333
|
-
ownerDocument
|
|
21334
|
-
|
|
21335
|
-
|
|
21336
|
-
|
|
21337
|
-
|
|
21358
|
+
if (!insertionPoint) {
|
|
21359
|
+
trigger?.root.remove();
|
|
21360
|
+
return false;
|
|
21361
|
+
}
|
|
21362
|
+
if (!trigger) {
|
|
21363
|
+
for (const duplicate of ownerDocument.querySelectorAll(`[${SETTINGS_TRIGGER_ATTRIBUTE}]`)) {
|
|
21364
|
+
duplicate.remove();
|
|
21365
|
+
}
|
|
21366
|
+
trigger = mountRendererSettingsTrigger(
|
|
21367
|
+
"application-header",
|
|
21368
|
+
options.available,
|
|
21369
|
+
options.onOpen,
|
|
21370
|
+
ownerDocument,
|
|
21371
|
+
options.messages
|
|
21372
|
+
);
|
|
21373
|
+
trigger.setUpdateAvailable(updateAvailable);
|
|
21374
|
+
}
|
|
21375
|
+
if (trigger.root.parentElement !== insertionPoint.parent || trigger.root.nextSibling !== insertionPoint.before) {
|
|
21376
|
+
insertionPoint.parent.insertBefore(trigger.root, insertionPoint.before);
|
|
21377
|
+
}
|
|
21338
21378
|
return true;
|
|
21339
21379
|
};
|
|
21340
21380
|
refresh();
|
|
@@ -21544,13 +21584,15 @@ ${error51.stderrTail}`] : []
|
|
|
21544
21584
|
pi: harnessIdSchema.parse("pi"),
|
|
21545
21585
|
"claude-code": harnessIdSchema.parse("claude-code"),
|
|
21546
21586
|
"deepseek-harness": harnessIdSchema.parse("deepseek-harness"),
|
|
21547
|
-
grok: harnessIdSchema.parse("grok")
|
|
21587
|
+
grok: harnessIdSchema.parse("grok"),
|
|
21588
|
+
omp: harnessIdSchema.parse("omp")
|
|
21548
21589
|
};
|
|
21549
21590
|
var externalAgents = [
|
|
21550
21591
|
"pi",
|
|
21551
21592
|
"claude-code",
|
|
21552
21593
|
"deepseek-harness",
|
|
21553
|
-
"grok"
|
|
21594
|
+
"grok",
|
|
21595
|
+
"omp"
|
|
21554
21596
|
];
|
|
21555
21597
|
function isRetryableHarnessAvailability(availability, error51) {
|
|
21556
21598
|
return availability !== void 0 && availability !== "ready" && availability !== "notInstalled" && error51?.retryable === true;
|
|
@@ -21624,6 +21666,17 @@ ${error51.stderrTail}`] : []
|
|
|
21624
21666
|
...permissionModeId ? { permissionModeId } : {}
|
|
21625
21667
|
};
|
|
21626
21668
|
}
|
|
21669
|
+
if (inspection.harnessId === "omp") {
|
|
21670
|
+
const transportSelection = decodeOmpTransportModelId(inspection.transportModelId);
|
|
21671
|
+
if (!transportSelection) throw new Error("OMP Thread reported an incompatible transport Model");
|
|
21672
|
+
const model = inspection.effectiveModel ?? transportSelection.model;
|
|
21673
|
+
const thinkingOptionId = selectableThinkingOptionId(inspection) ?? transportSelection.thinkingOptionId;
|
|
21674
|
+
return {
|
|
21675
|
+
agent: "omp",
|
|
21676
|
+
...model ? { model } : {},
|
|
21677
|
+
...thinkingOptionId ? { thinkingOptionId } : {}
|
|
21678
|
+
};
|
|
21679
|
+
}
|
|
21627
21680
|
if (inspection.harnessId === "claude-code") {
|
|
21628
21681
|
const transportSelection = decodeClaudeTransportModelId(inspection.transportModelId);
|
|
21629
21682
|
if (!transportSelection) {
|
|
@@ -21768,7 +21821,8 @@ ${error51.stderrTail}`] : []
|
|
|
21768
21821
|
pi: void 0,
|
|
21769
21822
|
"claude-code": void 0,
|
|
21770
21823
|
"deepseek-harness": void 0,
|
|
21771
|
-
grok: void 0
|
|
21824
|
+
grok: void 0,
|
|
21825
|
+
omp: void 0
|
|
21772
21826
|
},
|
|
21773
21827
|
requestGeneration: 0,
|
|
21774
21828
|
request: null,
|
package/bin/codexhost
CHANGED
|
Binary file
|
package/libexec/codexhost-shim
CHANGED
|
Binary file
|
|
Binary file
|