@karlorz/codexhost-cli-darwin-x64 0.13.3-1 → 0.13.3-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.
- package/README.md +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-web.js +63 -0
- package/app/host-runtime.mjs +12 -0
- package/app/plugins/grok/plugin.mjs +281 -178
- package/app/renderer-extension.js +211 -5
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Run Pi and Claude Code as first-class external harnesses inside Codex Desktop.
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install -g @karlorz/codexhost-cli@0.13.3-
|
|
10
|
+
npm install -g @karlorz/codexhost-cli@0.13.3-3
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
Do not install this package directly. npm selects it through the optional dependencies of `@karlorz/codexhost-cli`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"version":"0.13.3-
|
|
1
|
+
{"schemaVersion":1,"version":"0.13.3-3","distribution":"npm","target":"macos-x64"}
|
package/app/console-web.js
CHANGED
|
@@ -20663,6 +20663,14 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
20663
20663
|
otherSection: "Other",
|
|
20664
20664
|
appearanceDescription: "Conversation display and local resource management.",
|
|
20665
20665
|
appearanceGroup: "Appearance",
|
|
20666
|
+
hideCodexUsageBannerTitle: "Hide Codex usage warning",
|
|
20667
|
+
hideCodexUsageBannerDescription: "On by default. Hide the out-of-usage card on every Composer.",
|
|
20668
|
+
hideCodexUsageBannerHelpLabel: "About hiding the Codex usage warning",
|
|
20669
|
+
hideCodexUsageBannerHelp: Object.freeze([
|
|
20670
|
+
"The native card appears when the signed-in ChatGPT Codex quota is exhausted.",
|
|
20671
|
+
"When this is on, that card is hidden on every Composer, including Codex threads. Reset usage and Upgrade stay available in Settings.",
|
|
20672
|
+
"Turning this off only shows the native card again. Send on this Composer, including Codex threads, is already separated from that quota card."
|
|
20673
|
+
]),
|
|
20666
20674
|
cpaLiveVoiceTitle: "Override live voice",
|
|
20667
20675
|
cpaLiveVoiceDescription: "On by default. Host creates the realtime call instead of ChatGPT.",
|
|
20668
20676
|
cpaLiveVoiceHelpLabel: "About overriding live voice",
|
|
@@ -20946,6 +20954,14 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
20946
20954
|
otherSection: "\u5176\u4ED6",
|
|
20947
20955
|
appearanceDescription: "\u4F1A\u8BDD\u663E\u793A\u4E0E\u672C\u5730\u8D44\u6E90\u7BA1\u7406\u3002",
|
|
20948
20956
|
appearanceGroup: "\u5916\u89C2",
|
|
20957
|
+
hideCodexUsageBannerTitle: "\u9690\u85CF Codex \u989D\u5EA6\u8B66\u544A",
|
|
20958
|
+
hideCodexUsageBannerDescription: "\u9ED8\u8BA4\u5F00\u542F\u3002\u5728\u6240\u6709 Composer \u4E0A\u9690\u85CF\u989D\u5EA6\u8017\u5C3D\u5361\u7247\u3002",
|
|
20959
|
+
hideCodexUsageBannerHelpLabel: "\u9690\u85CF Codex \u989D\u5EA6\u8B66\u544A\u8BF4\u660E",
|
|
20960
|
+
hideCodexUsageBannerHelp: Object.freeze([
|
|
20961
|
+
"\u5DF2\u767B\u5F55\u7684 ChatGPT Codex \u989D\u5EA6\u8017\u5C3D\u65F6\uFF0CDesktop \u4F1A\u663E\u793A\u539F\u751F\u8B66\u544A\u5361\u7247\u3002",
|
|
20962
|
+
"\u5F00\u542F\u540E\uFF0C\u6240\u6709 Composer \u90FD\u9690\u85CF\u8BE5\u5361\u7247\uFF0C\u5305\u62EC Codex \u4F1A\u8BDD\u3002\u300C\u91CD\u7F6E\u7528\u91CF\u300D\u548C\u300C\u5347\u7EA7\u300D\u4ECD\u53EF\u5728\u8BBE\u7F6E\u4E2D\u4F7F\u7528\u3002",
|
|
20963
|
+
"\u5173\u95ED\u6B64\u5F00\u5173\u53EA\u4F1A\u91CD\u65B0\u663E\u793A\u539F\u751F\u5361\u7247\u3002\u5F53\u524D Composer \u7684\u53D1\u9001\uFF08\u5305\u62EC Codex \u4F1A\u8BDD\uFF09\u5DF2\u4E0E\u8BE5\u989D\u5EA6\u5361\u7247\u5206\u79BB\u3002"
|
|
20964
|
+
]),
|
|
20949
20965
|
cpaLiveVoiceTitle: "\u6539\u5199\u5B9E\u65F6\u8BED\u97F3",
|
|
20950
20966
|
cpaLiveVoiceDescription: "\u9ED8\u8BA4\u5F00\u542F\u3002\u7531 Host \u521B\u5EFA realtime \u901A\u8BDD\uFF0C\u800C\u4E0D\u662F ChatGPT\u3002",
|
|
20951
20967
|
cpaLiveVoiceHelpLabel: "\u6539\u5199\u5B9E\u65F6\u8BED\u97F3\u8BF4\u660E",
|
|
@@ -26745,6 +26761,27 @@ ${error51.stderrTail}`] : []
|
|
|
26745
26761
|
};
|
|
26746
26762
|
}
|
|
26747
26763
|
|
|
26764
|
+
// src/renderer-codex-usage-banner-preference.ts
|
|
26765
|
+
var CODEX_USAGE_BANNER_STORAGE_KEY = "codexhost.codex-usage-banner-hidden.v1";
|
|
26766
|
+
var CODEX_USAGE_BANNER_CHANGE_EVENT = "codexhost:codex-usage-banner-changed";
|
|
26767
|
+
function readCodexUsageBannerPreference(owner) {
|
|
26768
|
+
if (!owner) return true;
|
|
26769
|
+
try {
|
|
26770
|
+
return owner.localStorage.getItem(CODEX_USAGE_BANNER_STORAGE_KEY) !== "0";
|
|
26771
|
+
} catch {
|
|
26772
|
+
return true;
|
|
26773
|
+
}
|
|
26774
|
+
}
|
|
26775
|
+
function writeCodexUsageBannerPreference(owner, enabled) {
|
|
26776
|
+
try {
|
|
26777
|
+
owner.localStorage.setItem(CODEX_USAGE_BANNER_STORAGE_KEY, enabled ? "1" : "0");
|
|
26778
|
+
} catch {
|
|
26779
|
+
return false;
|
|
26780
|
+
}
|
|
26781
|
+
owner.dispatchEvent(new Event(CODEX_USAGE_BANNER_CHANGE_EVENT));
|
|
26782
|
+
return true;
|
|
26783
|
+
}
|
|
26784
|
+
|
|
26748
26785
|
// src/renderer-transcript-dom.ts
|
|
26749
26786
|
var REASONING_SOFT_WRAP_STORAGE_KEY = "codexhost.reasoning-soft-wrap.v1";
|
|
26750
26787
|
var REASONING_SOFT_WRAP_CHANGE_EVENT = "codexhost:reasoning-soft-wrap-changed";
|
|
@@ -27011,6 +27048,31 @@ ${error51.stderrTail}`] : []
|
|
|
27011
27048
|
description.className = "settings-page-description";
|
|
27012
27049
|
description.textContent = messages.appearanceDescription;
|
|
27013
27050
|
const { group, card } = createPreferenceGroup(document2, messages.appearanceGroup);
|
|
27051
|
+
const usageBannerId = preferenceId("hide-codex-usage-banner");
|
|
27052
|
+
const usageBannerRow = createPreferenceItem(document2, {
|
|
27053
|
+
title: messages.hideCodexUsageBannerTitle,
|
|
27054
|
+
description: messages.hideCodexUsageBannerDescription,
|
|
27055
|
+
controlId: usageBannerId,
|
|
27056
|
+
help: {
|
|
27057
|
+
label: messages.hideCodexUsageBannerHelpLabel,
|
|
27058
|
+
lines: messages.hideCodexUsageBannerHelp
|
|
27059
|
+
}
|
|
27060
|
+
});
|
|
27061
|
+
const usageBanner = createPreferenceSwitch(
|
|
27062
|
+
document2,
|
|
27063
|
+
usageBannerId,
|
|
27064
|
+
usageBannerRow.description.id
|
|
27065
|
+
);
|
|
27066
|
+
usageBanner.checked = readCodexUsageBannerPreference(ownerWindow);
|
|
27067
|
+
usageBanner.addEventListener("change", () => {
|
|
27068
|
+
writeCodexUsageBannerPreference(ownerWindow, usageBanner.checked);
|
|
27069
|
+
});
|
|
27070
|
+
const syncUsageBanner = () => {
|
|
27071
|
+
usageBanner.checked = readCodexUsageBannerPreference(ownerWindow);
|
|
27072
|
+
};
|
|
27073
|
+
ownerWindow.addEventListener(CODEX_USAGE_BANNER_CHANGE_EVENT, syncUsageBanner);
|
|
27074
|
+
usageBannerRow.item.append(usageBanner);
|
|
27075
|
+
card.append(usageBannerRow.item);
|
|
27014
27076
|
const liveVoiceId = preferenceId("cpa-live-voice");
|
|
27015
27077
|
const liveVoiceRow = createPreferenceItem(document2, {
|
|
27016
27078
|
title: messages.cpaLiveVoiceTitle,
|
|
@@ -27060,6 +27122,7 @@ ${error51.stderrTail}`] : []
|
|
|
27060
27122
|
getLoadedSessionsClient
|
|
27061
27123
|
);
|
|
27062
27124
|
return () => {
|
|
27125
|
+
ownerWindow.removeEventListener(CODEX_USAGE_BANNER_CHANGE_EVENT, syncUsageBanner);
|
|
27063
27126
|
ownerWindow.removeEventListener(CPA_LIVE_VOICE_CHANGE_EVENT, syncLiveVoice);
|
|
27064
27127
|
ownerWindow.removeEventListener(REASONING_SOFT_WRAP_CHANGE_EVENT, sync);
|
|
27065
27128
|
disposeIdleRelease();
|
package/app/host-runtime.mjs
CHANGED
|
@@ -29339,6 +29339,18 @@ function projectItem(item, outcome, defaultCwd, includeCommandOutput = true, sen
|
|
|
29339
29339
|
changes: projectFileChanges(item.changes),
|
|
29340
29340
|
status: itemStatus(outcome)
|
|
29341
29341
|
};
|
|
29342
|
+
case "generatedImage":
|
|
29343
|
+
return {
|
|
29344
|
+
id: item.itemId,
|
|
29345
|
+
type: "imageGeneration",
|
|
29346
|
+
status: itemStatus(outcome),
|
|
29347
|
+
savedPath: item.savedPath,
|
|
29348
|
+
result: "",
|
|
29349
|
+
revisedPrompt: item.revisedPrompt ?? null,
|
|
29350
|
+
inputImages: [],
|
|
29351
|
+
failure: null,
|
|
29352
|
+
transparentBackground: null
|
|
29353
|
+
};
|
|
29342
29354
|
case "subagentDelegation": {
|
|
29343
29355
|
const primary = item.subagents[0];
|
|
29344
29356
|
const sameConfiguration = item.subagents.every((subagent) => subagent.model === primary?.model && subagent.reasoningEffort === primary?.reasoningEffort);
|