@karlorz/codexhost-cli-darwin-arm64 0.13.2-2 → 0.13.3-0
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 +2 -4
- package/app/cpa-live-voice-hook.js +71 -0
- package/app/desktop-controller.mjs +5 -0
- package/app/host-runtime.mjs +1733 -487
- package/app/plugins/codebuddy/plugin.mjs +22 -1
- package/app/plugins/deepseek-harness/manifest.json +2 -2
- package/app/plugins/deepseek-harness/plugin.mjs +67 -7
- package/app/plugins/opencode/plugin.mjs +6 -2
- package/app/plugins/workbuddy/plugin.mjs +139 -2
- package/app/renderer-extension.js +333 -133
- 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.
|
|
10
|
+
npm install -g @karlorz/codexhost-cli@0.13.3-0
|
|
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.
|
|
1
|
+
{"schemaVersion":1,"version":"0.13.3-0","distribution":"npm","target":"macos-arm64"}
|
package/app/console-web.js
CHANGED
|
@@ -20834,7 +20834,7 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
20834
20834
|
launchPathSaveError: "Could not save. Enter an existing absolute installation folder on this Host and check configuration permissions.",
|
|
20835
20835
|
connectionOfficialWebsite: "Visit official website",
|
|
20836
20836
|
connectionOpenHarnessWeb: "Open DeepSeek Harness Web",
|
|
20837
|
-
connectionDeepSeekTestedVersions: "Supported DSH versions: 0.1.7-rc.1, 0.1.7-rc.2, 0.2.0-rc.1 and 0.2.
|
|
20837
|
+
connectionDeepSeekTestedVersions: "Supported DSH versions: 0.1.7-rc.1, 0.1.7-rc.2, 0.2.0-rc.1, 0.2.0-rc.2, 0.2.1-rc.1 and 0.2.1-rc.2. Versions newer than 0.2.1-rc.2 can be tried, but compatibility may be limited; versions older than 0.1.7-rc.1 must be upgraded first.",
|
|
20838
20838
|
connectionInstall: "Install",
|
|
20839
20839
|
connectionInstallDescription: "This Harness was not detected.",
|
|
20840
20840
|
connectionInstallRunning: "Installing on the selected Host. You can leave this page; login or setup may still be required afterward.",
|
|
@@ -21117,7 +21117,7 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
21117
21117
|
launchPathSaveError: "\u4FDD\u5B58\u5931\u8D25\u3002\u8BF7\u586B\u5199\u6B64 Host \u4E0A\u5B9E\u9645\u5B58\u5728\u7684\u5B89\u88C5\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5E76\u786E\u8BA4\u914D\u7F6E\u76EE\u5F55\u53EF\u5199\u3002",
|
|
21118
21118
|
connectionOfficialWebsite: "\u8BBF\u95EE\u5B98\u7F51",
|
|
21119
21119
|
connectionOpenHarnessWeb: "\u6253\u5F00 DeepSeek Harness Web",
|
|
21120
|
-
connectionDeepSeekTestedVersions: "\u652F\u6301 DSH \u7248\u672C\uFF1A0.1.7-rc.1\u30010.1.7-rc.2\u30010.2.0-rc.1 \u548C 0.2.
|
|
21120
|
+
connectionDeepSeekTestedVersions: "\u652F\u6301 DSH \u7248\u672C\uFF1A0.1.7-rc.1\u30010.1.7-rc.2\u30010.2.0-rc.1\u30010.2.0-rc.2\u30010.2.1-rc.1 \u548C 0.2.1-rc.2\u3002\u9AD8\u4E8E 0.2.1-rc.2 \u7684\u7248\u672C\u53EF\u4EE5\u5C1D\u8BD5\u8FDE\u63A5\uFF0C\u4F46\u9002\u914D\u5EA6\u53EF\u80FD\u6709\u9650\uFF1B\u4F4E\u4E8E 0.1.7-rc.1 \u7684\u7248\u672C\u9700\u8981\u5148\u5347\u7EA7\u3002",
|
|
21121
21121
|
connectionInstall: "\u5B89\u88C5",
|
|
21122
21122
|
connectionInstallDescription: "\u5C1A\u672A\u68C0\u6D4B\u5230\u8BE5 Harness\u3002",
|
|
21123
21123
|
connectionInstallRunning: "\u6B63\u5728\u6240\u9009 Host \u4E0A\u5B89\u88C5\uFF0C\u79BB\u5F00\u9875\u9762\u4E0D\u4F1A\u4E2D\u65AD\u3002\u5B89\u88C5\u540E\u53EF\u80FD\u4ECD\u9700\u767B\u5F55\u6216\u914D\u7F6E\u3002",
|
|
@@ -21248,7 +21248,6 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
21248
21248
|
// src/renderer-usage-control.ts
|
|
21249
21249
|
var ENGLISH_USAGE_MESSAGES = Object.freeze({
|
|
21250
21250
|
usage: "Usage",
|
|
21251
|
-
account: "Account",
|
|
21252
21251
|
context: "Context",
|
|
21253
21252
|
recordedCredits: "Recorded usage",
|
|
21254
21253
|
latestCacheHit: "Latest cache hit (CH)",
|
|
@@ -21274,7 +21273,6 @@ th[aria-sort] .console-usage-sort__mark {
|
|
|
21274
21273
|
});
|
|
21275
21274
|
var CHINESE_USAGE_MESSAGES = Object.freeze({
|
|
21276
21275
|
usage: "\u7528\u91CF",
|
|
21277
|
-
account: "\u8D26\u53F7",
|
|
21278
21276
|
context: "\u4E0A\u4E0B\u6587",
|
|
21279
21277
|
recordedCredits: "\u5DF2\u8BB0\u5F55\u6D88\u8017",
|
|
21280
21278
|
latestCacheHit: "\u6700\u8FD1\u7F13\u5B58\u547D\u4E2D\uFF08CH\uFF09",
|
|
@@ -144,6 +144,77 @@
|
|
|
144
144
|
return handle;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
+
// src/renderer-overlay-thread-isolation.ts
|
|
148
|
+
function isRecord2(value) {
|
|
149
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
150
|
+
}
|
|
151
|
+
var BLOCKED_METHODS = /* @__PURE__ */ new Set(["thread/started"]);
|
|
152
|
+
function isAvatarOverlayHref(href) {
|
|
153
|
+
try {
|
|
154
|
+
const url = new URL(href);
|
|
155
|
+
if (url.pathname === "/avatar-overlay.html") return true;
|
|
156
|
+
return url.searchParams.get("initialRoute") === "/avatar-overlay";
|
|
157
|
+
} catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function overlayBlocksHostNotification(method, threadId, activeRealtimeThreadIds) {
|
|
162
|
+
if (method.startsWith("thread/realtime/")) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
if (threadId !== void 0 && activeRealtimeThreadIds.has(threadId)) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
if (BLOCKED_METHODS.has(method)) return true;
|
|
169
|
+
return method.startsWith("turn/") || method.startsWith("item/");
|
|
170
|
+
}
|
|
171
|
+
function notificationThreadId(params) {
|
|
172
|
+
if (!isRecord2(params)) return void 0;
|
|
173
|
+
if (typeof params.threadId === "string" && params.threadId.length > 0) return params.threadId;
|
|
174
|
+
const thread = params.thread;
|
|
175
|
+
if (isRecord2(thread) && typeof thread.id === "string" && thread.id.length > 0) {
|
|
176
|
+
return thread.id;
|
|
177
|
+
}
|
|
178
|
+
return void 0;
|
|
179
|
+
}
|
|
180
|
+
function installOverlayThreadIsolation(target = typeof globalThis === "undefined" ? null : globalThis) {
|
|
181
|
+
if (!target || typeof target.addEventListener !== "function") {
|
|
182
|
+
return { status: "disabled", dispose() {
|
|
183
|
+
} };
|
|
184
|
+
}
|
|
185
|
+
const href = target.location?.href;
|
|
186
|
+
if (typeof href !== "string" || !isAvatarOverlayHref(href)) {
|
|
187
|
+
return { status: "disabled", dispose() {
|
|
188
|
+
} };
|
|
189
|
+
}
|
|
190
|
+
const activeRealtimeThreadIds = /* @__PURE__ */ new Set();
|
|
191
|
+
const listener = (event) => {
|
|
192
|
+
const message = event.data;
|
|
193
|
+
if (!isRecord2(message) || message.type !== "mcp-notification") return;
|
|
194
|
+
if (typeof message.method !== "string") return;
|
|
195
|
+
const threadId = notificationThreadId(message.params);
|
|
196
|
+
if (message.method === "thread/realtime/started" && threadId) {
|
|
197
|
+
activeRealtimeThreadIds.add(threadId);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if ((message.method === "thread/realtime/closed" || message.method === "thread/realtime/error") && threadId) {
|
|
201
|
+
activeRealtimeThreadIds.delete(threadId);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (overlayBlocksHostNotification(message.method, threadId, activeRealtimeThreadIds)) {
|
|
205
|
+
event.stopImmediatePropagation();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
target.addEventListener("message", listener, true);
|
|
209
|
+
return {
|
|
210
|
+
status: "active",
|
|
211
|
+
dispose() {
|
|
212
|
+
target.removeEventListener("message", listener, true);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
147
217
|
// src/cpa-live-voice-entry.ts
|
|
148
218
|
installCpaLiveVoiceHook();
|
|
219
|
+
installOverlayThreadIsolation();
|
|
149
220
|
})();
|
|
@@ -17133,6 +17133,11 @@ function createDraftPrewarmPolicyBridge(manager, bridge, hostId2, target, prewar
|
|
|
17133
17133
|
throw new Error("Renderer request manager is retired");
|
|
17134
17134
|
return manager;
|
|
17135
17135
|
},
|
|
17136
|
+
selectedModel() {
|
|
17137
|
+
if (disposed || isCurrentManager && !isCurrentManager())
|
|
17138
|
+
throw new Error("Renderer request manager is retired");
|
|
17139
|
+
return selectedModel;
|
|
17140
|
+
},
|
|
17136
17141
|
select(model2) {
|
|
17137
17142
|
if (disposed || isCurrentManager && !isCurrentManager())
|
|
17138
17143
|
throw new Error("Renderer request manager is retired");
|