@karlorz/codexhost-cli-win32-arm64 0.13.3-5 → 0.13.3-6
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-server.mjs +402 -31
- package/app/console-web.js +776 -186
- package/app/cpa-live-voice-hook.js +332 -149
- package/app/desktop-controller.mjs +113 -34
- package/app/host-runtime.mjs +248 -95
- package/app/plugins/antigravity/plugin.mjs +47 -0
- package/app/plugins/claude-code/plugin.mjs +98 -7
- package/app/plugins/codebuddy/plugin.mjs +47 -0
- package/app/plugins/codex-usage/plugin.mjs +47 -0
- package/app/plugins/cursor-cli/plugin.mjs +47 -0
- package/app/plugins/deepseek-harness/plugin.mjs +47 -0
- package/app/plugins/grok/plugin.mjs +86 -2
- package/app/plugins/hermes/plugin.mjs +47 -0
- package/app/plugins/kimi-code/plugin.mjs +47 -0
- package/app/plugins/kiro-cli/plugin.mjs +47 -0
- package/app/plugins/omp/plugin.mjs +47 -0
- package/app/plugins/opencode/plugin.mjs +47 -0
- package/app/plugins/pi/plugin.mjs +47 -0
- package/app/plugins/qoder/plugin.mjs +47 -0
- package/app/plugins/qoder-cn/plugin.mjs +47 -0
- package/app/plugins/workbuddy/plugin.mjs +47 -0
- package/app/plugins/zcode/plugin.mjs +47 -0
- package/app/renderer-extension.js +1918 -741
- package/bin/codexhost.exe +0 -0
- package/libexec/codexhost-node-repl.exe +0 -0
- package/libexec/codexhost-shim.exe +0 -0
- package/libexec/codexhost-updater.exe +0 -0
- package/package.json +1 -1
|
@@ -14823,6 +14823,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
14823
14823
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
14824
14824
|
});
|
|
14825
14825
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
14826
|
+
"codexhost/voice/gateway-status",
|
|
14826
14827
|
"codexhost/console/remote-connections",
|
|
14827
14828
|
"codexhost/runtime/status",
|
|
14828
14829
|
"codexhost/remote/ssh-setup",
|
|
@@ -15932,6 +15933,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
15932
15933
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
15933
15934
|
]);
|
|
15934
15935
|
|
|
15936
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
15937
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
15938
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
15939
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
15940
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
15941
|
+
});
|
|
15942
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
15943
|
+
chatExperience: "chatgpt",
|
|
15944
|
+
chatConnection: "desktop",
|
|
15945
|
+
workConnection: "gateway"
|
|
15946
|
+
});
|
|
15947
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
15948
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
15949
|
+
external_exports.strictObject({
|
|
15950
|
+
operation: external_exports.literal("get"),
|
|
15951
|
+
runtime: external_exports.strictObject({
|
|
15952
|
+
id: external_exports.string().uuid(),
|
|
15953
|
+
revision: external_exports.string().max(64),
|
|
15954
|
+
activeCall: external_exports.boolean()
|
|
15955
|
+
}).optional()
|
|
15956
|
+
}),
|
|
15957
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
15958
|
+
external_exports.strictObject({
|
|
15959
|
+
operation: external_exports.literal("set"),
|
|
15960
|
+
settings: voiceSettingsSchema,
|
|
15961
|
+
revision: external_exports.string().max(64)
|
|
15962
|
+
}),
|
|
15963
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
15964
|
+
]);
|
|
15965
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
15966
|
+
settings: voiceSettingsSchema,
|
|
15967
|
+
initialized: external_exports.boolean(),
|
|
15968
|
+
revision: external_exports.string(),
|
|
15969
|
+
activeInject: external_exports.boolean().nullable(),
|
|
15970
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
15971
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
15972
|
+
routesActive: external_exports.boolean().nullable(),
|
|
15973
|
+
activeCall: external_exports.boolean().nullable(),
|
|
15974
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
15975
|
+
restartAvailable: external_exports.boolean(),
|
|
15976
|
+
restart: external_exports.strictObject({
|
|
15977
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
15978
|
+
error: external_exports.string().nullable()
|
|
15979
|
+
})
|
|
15980
|
+
});
|
|
15981
|
+
|
|
15935
15982
|
// ../../shared-contracts/dist/index.js
|
|
15936
15983
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
15937
15984
|
|
|
@@ -53901,7 +53948,19 @@ function resolveHarnessExecutable(spec, input, dependencies = {}) {
|
|
|
53901
53948
|
|
|
53902
53949
|
// ../../harness-discovery/dist/installation.js
|
|
53903
53950
|
import { execFile as execFile2 } from "node:child_process";
|
|
53951
|
+
import { open as open3 } from "node:fs/promises";
|
|
53904
53952
|
import { homedir } from "node:os";
|
|
53953
|
+
async function readLauncherScript(command) {
|
|
53954
|
+
const file2 = await open3(command, "r");
|
|
53955
|
+
try {
|
|
53956
|
+
const buffer = Buffer.alloc(4096);
|
|
53957
|
+
const { bytesRead } = await file2.read(buffer, 0, buffer.length, 0);
|
|
53958
|
+
const prefix = buffer.toString("utf8", 0, bytesRead);
|
|
53959
|
+
return prefix.startsWith("#!") || /\.(cmd|bat|ps1)$/i.test(command) ? prefix : "";
|
|
53960
|
+
} finally {
|
|
53961
|
+
await file2.close();
|
|
53962
|
+
}
|
|
53963
|
+
}
|
|
53905
53964
|
function runInstallationCommand(command, args, environment, timeout = 3e4) {
|
|
53906
53965
|
const env = withNodeRuntimeOnPath(environment);
|
|
53907
53966
|
const invocation = /\.[cm]?js$/i.test(command) ? commandInvocation(process.execPath, [command, ...args], env) : commandInvocation(command, args, env);
|
|
@@ -54193,7 +54252,7 @@ function resolveClaudeCodeExecutable(input = {}, dependencies = {}) {
|
|
|
54193
54252
|
|
|
54194
54253
|
// dist/pending-session.js
|
|
54195
54254
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
54196
|
-
import { mkdir as mkdir3, open as
|
|
54255
|
+
import { mkdir as mkdir3, open as open4, readFile as readFile4, rename as rename3, rm as rm4, stat as stat3, unlink as unlink2 } from "node:fs/promises";
|
|
54197
54256
|
import os5 from "node:os";
|
|
54198
54257
|
import path10 from "node:path";
|
|
54199
54258
|
var reservationSchema = external_exports.strictObject({
|
|
@@ -54233,7 +54292,7 @@ var ClaudePendingSessions = class {
|
|
|
54233
54292
|
await mkdir3(this.#directory, { recursive: true, mode: 448 });
|
|
54234
54293
|
await mkdir3(directory, { mode: 448 });
|
|
54235
54294
|
try {
|
|
54236
|
-
const file2 = await
|
|
54295
|
+
const file2 = await open4(path10.join(directory, "session.json"), "wx", 384);
|
|
54237
54296
|
try {
|
|
54238
54297
|
await file2.writeFile(JSON.stringify(reservation));
|
|
54239
54298
|
await file2.sync();
|
|
@@ -54271,7 +54330,7 @@ var ClaudePendingSessions = class {
|
|
|
54271
54330
|
const directory = this.#path(ref, cwd);
|
|
54272
54331
|
const temporary = path10.join(directory, `${randomUUID3()}.tmp`);
|
|
54273
54332
|
try {
|
|
54274
|
-
const file2 = await
|
|
54333
|
+
const file2 = await open4(temporary, "wx", 384);
|
|
54275
54334
|
try {
|
|
54276
54335
|
await file2.writeFile(JSON.stringify(reservationSchema.parse({
|
|
54277
54336
|
version: 1,
|
|
@@ -54292,7 +54351,7 @@ var ClaudePendingSessions = class {
|
|
|
54292
54351
|
async #sync(directory) {
|
|
54293
54352
|
if (process.platform === "win32")
|
|
54294
54353
|
return;
|
|
54295
|
-
const handle = await
|
|
54354
|
+
const handle = await open4(directory, "r");
|
|
54296
54355
|
try {
|
|
54297
54356
|
await handle.sync();
|
|
54298
54357
|
} finally {
|
|
@@ -54301,7 +54360,7 @@ var ClaudePendingSessions = class {
|
|
|
54301
54360
|
}
|
|
54302
54361
|
async claim(ref, cwd) {
|
|
54303
54362
|
await this.read(ref, cwd);
|
|
54304
|
-
const claim = await
|
|
54363
|
+
const claim = await open4(path10.join(this.#path(ref, cwd), "started"), "wx", 384);
|
|
54305
54364
|
try {
|
|
54306
54365
|
await claim.sync();
|
|
54307
54366
|
} finally {
|
|
@@ -54457,6 +54516,12 @@ function subagentRole(argumentsValue) {
|
|
|
54457
54516
|
function subagentBackground(argumentsValue) {
|
|
54458
54517
|
return isRecord7(argumentsValue) && argumentsValue.run_in_background === true;
|
|
54459
54518
|
}
|
|
54519
|
+
function subagentModel(argumentsValue) {
|
|
54520
|
+
if (!isRecord7(argumentsValue))
|
|
54521
|
+
return void 0;
|
|
54522
|
+
const model2 = boundedString(argumentsValue.model, SUBAGENT_DESCRIPTION_LIMIT);
|
|
54523
|
+
return model2 === "inherit" ? void 0 : model2;
|
|
54524
|
+
}
|
|
54460
54525
|
function targetedSubagentId(argumentsValue) {
|
|
54461
54526
|
if (!isRecord7(argumentsValue))
|
|
54462
54527
|
return void 0;
|
|
@@ -54730,6 +54795,10 @@ var ClaudeNativeTurnAccumulator = class {
|
|
|
54730
54795
|
const parentTool = parentCallId ? this.#tools.get(parentCallId) : void 0;
|
|
54731
54796
|
if (parentCallId && parentTool && (message.type === "assistant" || message.type === "user")) {
|
|
54732
54797
|
if (parentTool.subagent) {
|
|
54798
|
+
const model2 = message.type === "assistant" ? subagentModel(message.message) : void 0;
|
|
54799
|
+
if (model2 && model2 !== "<synthetic>") {
|
|
54800
|
+
events.push({ type: "subagent.updated", callId: parentCallId, status: "running", model: model2 });
|
|
54801
|
+
}
|
|
54733
54802
|
events.push({ type: "subagent.transcript.changed", callId: parentCallId });
|
|
54734
54803
|
} else if (parentTool.workflow) {
|
|
54735
54804
|
events.push({ type: "workflow.activity", callId: parentCallId });
|
|
@@ -55099,6 +55168,7 @@ var ClaudeNativeTurnAccumulator = class {
|
|
|
55099
55168
|
} else if (subagent) {
|
|
55100
55169
|
const prompt = subagentPrompt(argumentsResult.data);
|
|
55101
55170
|
const role = subagentRole(argumentsResult.data);
|
|
55171
|
+
const model2 = block.name === "SendMessage" ? void 0 : subagentModel(argumentsResult.data);
|
|
55102
55172
|
const agentId = targetedSubagentId(argumentsResult.data);
|
|
55103
55173
|
events.push({
|
|
55104
55174
|
type: "subagent.started",
|
|
@@ -55107,6 +55177,7 @@ var ClaudeNativeTurnAccumulator = class {
|
|
|
55107
55177
|
description: subagentDescription(argumentsResult.data, block.name),
|
|
55108
55178
|
...prompt ? { prompt } : {},
|
|
55109
55179
|
...role ? { role } : {},
|
|
55180
|
+
...model2 ? { model: model2 } : {},
|
|
55110
55181
|
background: block.name === "SendMessage" || subagentBackground(argumentsResult.data),
|
|
55111
55182
|
...agentId ? { nativeSubagentId: agentId } : {}
|
|
55112
55183
|
});
|
|
@@ -57707,6 +57778,7 @@ var ClaudeSubagentLifecycle = class {
|
|
|
57707
57778
|
...event.nativeSubagentId ? { nativeSubagentId: event.nativeSubagentId } : {},
|
|
57708
57779
|
description: event.description,
|
|
57709
57780
|
...event.role ? { role: event.role } : {},
|
|
57781
|
+
...event.model ? { model: event.model } : {},
|
|
57710
57782
|
background: event.background,
|
|
57711
57783
|
status: "running"
|
|
57712
57784
|
};
|
|
@@ -57733,6 +57805,7 @@ var ClaudeSubagentLifecycle = class {
|
|
|
57733
57805
|
...event.nativeSubagentId ? { nativeSubagentId: event.nativeSubagentId } : {},
|
|
57734
57806
|
...event.description ? { description: event.description } : {},
|
|
57735
57807
|
...event.role ? { role: event.role } : {},
|
|
57808
|
+
...event.model ? { model: event.model } : {},
|
|
57736
57809
|
...event.resultSummary ? { resultSummary: event.resultSummary } : {}
|
|
57737
57810
|
};
|
|
57738
57811
|
active.item = { ...active.item, subagents: [subagent] };
|
|
@@ -58067,7 +58140,7 @@ var ClaudeTaskTracker = class {
|
|
|
58067
58140
|
};
|
|
58068
58141
|
|
|
58069
58142
|
// dist/background-command-items.js
|
|
58070
|
-
import { open as
|
|
58143
|
+
import { open as open5 } from "node:fs/promises";
|
|
58071
58144
|
import { StringDecoder } from "node:string_decoder";
|
|
58072
58145
|
var POLL_INTERVAL_MS = 1e3;
|
|
58073
58146
|
var READ_CHUNK_BYTES = 64 * 1024;
|
|
@@ -58150,7 +58223,7 @@ var ClaudeBackgroundCommandItems = class {
|
|
|
58150
58223
|
return;
|
|
58151
58224
|
let handle;
|
|
58152
58225
|
try {
|
|
58153
|
-
handle = await
|
|
58226
|
+
handle = await open5(followed.outputFile, "r");
|
|
58154
58227
|
} catch {
|
|
58155
58228
|
return;
|
|
58156
58229
|
}
|
|
@@ -61174,6 +61247,24 @@ function createClaudeInstallation(environment, command) {
|
|
|
61174
61247
|
environment,
|
|
61175
61248
|
...command ? { command } : {}
|
|
61176
61249
|
});
|
|
61250
|
+
const launcherScript = await readLauncherScript(executable);
|
|
61251
|
+
if (launcherScript.includes("CLAWGOD_CLI=")) {
|
|
61252
|
+
return {
|
|
61253
|
+
currentVersion: versionFromOutput(await runInstallationCommand(executable, ["--version"], {
|
|
61254
|
+
...environment,
|
|
61255
|
+
DISABLE_AUTOUPDATER: "1"
|
|
61256
|
+
})),
|
|
61257
|
+
latestVersion: "Unknown",
|
|
61258
|
+
latestVersionKind: "unknown",
|
|
61259
|
+
updateAvailable: false,
|
|
61260
|
+
canUpdate: false,
|
|
61261
|
+
messageCode: "original-installer",
|
|
61262
|
+
notice: {
|
|
61263
|
+
en: "Managed by clawgod. Use clawgod's updater or installer to preserve the installed patches. The latest patched version is not checked here.",
|
|
61264
|
+
"zh-CN": "此安装由 clawgod 管理。请使用 clawgod 的更新程序或安装程序保留补丁;此处不检查最新补丁版本。"
|
|
61265
|
+
}
|
|
61266
|
+
};
|
|
61267
|
+
}
|
|
61177
61268
|
const home = environment.HOME ?? environment.USERPROFILE ?? homedir2();
|
|
61178
61269
|
const config2 = environment.CLAUDE_CONFIG_DIR ? path17.resolve(home, environment.CLAUDE_CONFIG_DIR) : path17.join(home, ".claude");
|
|
61179
61270
|
const managedFile = process.platform === "darwin" ? "/Library/Application Support/ClaudeCode/managed-settings.json" : process.platform === "win32" ? path17.join(environment.ProgramFiles ?? "C:\\Program Files", "ClaudeCode", "managed-settings.json") : "/etc/claude-code/managed-settings.json";
|
|
@@ -15299,6 +15299,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
15299
15299
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
15300
15300
|
});
|
|
15301
15301
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
15302
|
+
"codexhost/voice/gateway-status",
|
|
15302
15303
|
"codexhost/console/remote-connections",
|
|
15303
15304
|
"codexhost/runtime/status",
|
|
15304
15305
|
"codexhost/remote/ssh-setup",
|
|
@@ -16408,6 +16409,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
16408
16409
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
16409
16410
|
]);
|
|
16410
16411
|
|
|
16412
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
16413
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
16414
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
16415
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
16416
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
16417
|
+
});
|
|
16418
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
16419
|
+
chatExperience: "chatgpt",
|
|
16420
|
+
chatConnection: "desktop",
|
|
16421
|
+
workConnection: "gateway"
|
|
16422
|
+
});
|
|
16423
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
16424
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
16425
|
+
external_exports.strictObject({
|
|
16426
|
+
operation: external_exports.literal("get"),
|
|
16427
|
+
runtime: external_exports.strictObject({
|
|
16428
|
+
id: external_exports.string().uuid(),
|
|
16429
|
+
revision: external_exports.string().max(64),
|
|
16430
|
+
activeCall: external_exports.boolean()
|
|
16431
|
+
}).optional()
|
|
16432
|
+
}),
|
|
16433
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
16434
|
+
external_exports.strictObject({
|
|
16435
|
+
operation: external_exports.literal("set"),
|
|
16436
|
+
settings: voiceSettingsSchema,
|
|
16437
|
+
revision: external_exports.string().max(64)
|
|
16438
|
+
}),
|
|
16439
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
16440
|
+
]);
|
|
16441
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
16442
|
+
settings: voiceSettingsSchema,
|
|
16443
|
+
initialized: external_exports.boolean(),
|
|
16444
|
+
revision: external_exports.string(),
|
|
16445
|
+
activeInject: external_exports.boolean().nullable(),
|
|
16446
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16447
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16448
|
+
routesActive: external_exports.boolean().nullable(),
|
|
16449
|
+
activeCall: external_exports.boolean().nullable(),
|
|
16450
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
16451
|
+
restartAvailable: external_exports.boolean(),
|
|
16452
|
+
restart: external_exports.strictObject({
|
|
16453
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
16454
|
+
error: external_exports.string().nullable()
|
|
16455
|
+
})
|
|
16456
|
+
});
|
|
16457
|
+
|
|
16411
16458
|
// ../../shared-contracts/dist/index.js
|
|
16412
16459
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
16413
16460
|
|
|
@@ -14817,6 +14817,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
14817
14817
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
14818
14818
|
});
|
|
14819
14819
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
14820
|
+
"codexhost/voice/gateway-status",
|
|
14820
14821
|
"codexhost/console/remote-connections",
|
|
14821
14822
|
"codexhost/runtime/status",
|
|
14822
14823
|
"codexhost/remote/ssh-setup",
|
|
@@ -15921,6 +15922,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
15921
15922
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
15922
15923
|
]);
|
|
15923
15924
|
|
|
15925
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
15926
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
15927
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
15928
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
15929
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
15930
|
+
});
|
|
15931
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
15932
|
+
chatExperience: "chatgpt",
|
|
15933
|
+
chatConnection: "desktop",
|
|
15934
|
+
workConnection: "gateway"
|
|
15935
|
+
});
|
|
15936
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
15937
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
15938
|
+
external_exports.strictObject({
|
|
15939
|
+
operation: external_exports.literal("get"),
|
|
15940
|
+
runtime: external_exports.strictObject({
|
|
15941
|
+
id: external_exports.string().uuid(),
|
|
15942
|
+
revision: external_exports.string().max(64),
|
|
15943
|
+
activeCall: external_exports.boolean()
|
|
15944
|
+
}).optional()
|
|
15945
|
+
}),
|
|
15946
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
15947
|
+
external_exports.strictObject({
|
|
15948
|
+
operation: external_exports.literal("set"),
|
|
15949
|
+
settings: voiceSettingsSchema,
|
|
15950
|
+
revision: external_exports.string().max(64)
|
|
15951
|
+
}),
|
|
15952
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
15953
|
+
]);
|
|
15954
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
15955
|
+
settings: voiceSettingsSchema,
|
|
15956
|
+
initialized: external_exports.boolean(),
|
|
15957
|
+
revision: external_exports.string(),
|
|
15958
|
+
activeInject: external_exports.boolean().nullable(),
|
|
15959
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
15960
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
15961
|
+
routesActive: external_exports.boolean().nullable(),
|
|
15962
|
+
activeCall: external_exports.boolean().nullable(),
|
|
15963
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
15964
|
+
restartAvailable: external_exports.boolean(),
|
|
15965
|
+
restart: external_exports.strictObject({
|
|
15966
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
15967
|
+
error: external_exports.string().nullable()
|
|
15968
|
+
})
|
|
15969
|
+
});
|
|
15970
|
+
|
|
15924
15971
|
// ../../shared-contracts/dist/index.js
|
|
15925
15972
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
15926
15973
|
|
|
@@ -27878,6 +27878,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
27878
27878
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
27879
27879
|
});
|
|
27880
27880
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
27881
|
+
"codexhost/voice/gateway-status",
|
|
27881
27882
|
"codexhost/console/remote-connections",
|
|
27882
27883
|
"codexhost/runtime/status",
|
|
27883
27884
|
"codexhost/remote/ssh-setup",
|
|
@@ -28987,6 +28988,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
28987
28988
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
28988
28989
|
]);
|
|
28989
28990
|
|
|
28991
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
28992
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
28993
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
28994
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
28995
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
28996
|
+
});
|
|
28997
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
28998
|
+
chatExperience: "chatgpt",
|
|
28999
|
+
chatConnection: "desktop",
|
|
29000
|
+
workConnection: "gateway"
|
|
29001
|
+
});
|
|
29002
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
29003
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
29004
|
+
external_exports.strictObject({
|
|
29005
|
+
operation: external_exports.literal("get"),
|
|
29006
|
+
runtime: external_exports.strictObject({
|
|
29007
|
+
id: external_exports.string().uuid(),
|
|
29008
|
+
revision: external_exports.string().max(64),
|
|
29009
|
+
activeCall: external_exports.boolean()
|
|
29010
|
+
}).optional()
|
|
29011
|
+
}),
|
|
29012
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
29013
|
+
external_exports.strictObject({
|
|
29014
|
+
operation: external_exports.literal("set"),
|
|
29015
|
+
settings: voiceSettingsSchema,
|
|
29016
|
+
revision: external_exports.string().max(64)
|
|
29017
|
+
}),
|
|
29018
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
29019
|
+
]);
|
|
29020
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
29021
|
+
settings: voiceSettingsSchema,
|
|
29022
|
+
initialized: external_exports.boolean(),
|
|
29023
|
+
revision: external_exports.string(),
|
|
29024
|
+
activeInject: external_exports.boolean().nullable(),
|
|
29025
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
29026
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
29027
|
+
routesActive: external_exports.boolean().nullable(),
|
|
29028
|
+
activeCall: external_exports.boolean().nullable(),
|
|
29029
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
29030
|
+
restartAvailable: external_exports.boolean(),
|
|
29031
|
+
restart: external_exports.strictObject({
|
|
29032
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
29033
|
+
error: external_exports.string().nullable()
|
|
29034
|
+
})
|
|
29035
|
+
});
|
|
29036
|
+
|
|
28990
29037
|
// ../../shared-contracts/dist/index.js
|
|
28991
29038
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
28992
29039
|
|
|
@@ -19061,6 +19061,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
19061
19061
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
19062
19062
|
});
|
|
19063
19063
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
19064
|
+
"codexhost/voice/gateway-status",
|
|
19064
19065
|
"codexhost/console/remote-connections",
|
|
19065
19066
|
"codexhost/runtime/status",
|
|
19066
19067
|
"codexhost/remote/ssh-setup",
|
|
@@ -20174,6 +20175,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
20174
20175
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
20175
20176
|
]);
|
|
20176
20177
|
|
|
20178
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
20179
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
20180
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
20181
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
20182
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
20183
|
+
});
|
|
20184
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
20185
|
+
chatExperience: "chatgpt",
|
|
20186
|
+
chatConnection: "desktop",
|
|
20187
|
+
workConnection: "gateway"
|
|
20188
|
+
});
|
|
20189
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
20190
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
20191
|
+
external_exports.strictObject({
|
|
20192
|
+
operation: external_exports.literal("get"),
|
|
20193
|
+
runtime: external_exports.strictObject({
|
|
20194
|
+
id: external_exports.string().uuid(),
|
|
20195
|
+
revision: external_exports.string().max(64),
|
|
20196
|
+
activeCall: external_exports.boolean()
|
|
20197
|
+
}).optional()
|
|
20198
|
+
}),
|
|
20199
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
20200
|
+
external_exports.strictObject({
|
|
20201
|
+
operation: external_exports.literal("set"),
|
|
20202
|
+
settings: voiceSettingsSchema,
|
|
20203
|
+
revision: external_exports.string().max(64)
|
|
20204
|
+
}),
|
|
20205
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
20206
|
+
]);
|
|
20207
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
20208
|
+
settings: voiceSettingsSchema,
|
|
20209
|
+
initialized: external_exports.boolean(),
|
|
20210
|
+
revision: external_exports.string(),
|
|
20211
|
+
activeInject: external_exports.boolean().nullable(),
|
|
20212
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
20213
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
20214
|
+
routesActive: external_exports.boolean().nullable(),
|
|
20215
|
+
activeCall: external_exports.boolean().nullable(),
|
|
20216
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
20217
|
+
restartAvailable: external_exports.boolean(),
|
|
20218
|
+
restart: external_exports.strictObject({
|
|
20219
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
20220
|
+
error: external_exports.string().nullable()
|
|
20221
|
+
})
|
|
20222
|
+
});
|
|
20223
|
+
|
|
20177
20224
|
// ../../shared-contracts/dist/index.js
|
|
20178
20225
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
20179
20226
|
|
|
@@ -246,7 +246,19 @@ function resolveHarnessExecutable(spec, input, dependencies = {}) {
|
|
|
246
246
|
|
|
247
247
|
// ../../harness-discovery/dist/installation.js
|
|
248
248
|
import { execFile } from "node:child_process";
|
|
249
|
+
import { open } from "node:fs/promises";
|
|
249
250
|
import { homedir } from "node:os";
|
|
251
|
+
async function readLauncherScript(command) {
|
|
252
|
+
const file2 = await open(command, "r");
|
|
253
|
+
try {
|
|
254
|
+
const buffer = Buffer.alloc(4096);
|
|
255
|
+
const { bytesRead } = await file2.read(buffer, 0, buffer.length, 0);
|
|
256
|
+
const prefix = buffer.toString("utf8", 0, bytesRead);
|
|
257
|
+
return prefix.startsWith("#!") || /\.(cmd|bat|ps1)$/i.test(command) ? prefix : "";
|
|
258
|
+
} finally {
|
|
259
|
+
await file2.close();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
250
262
|
function runInstallationCommand(command, args, environment, timeout = 3e4) {
|
|
251
263
|
const env = withNodeRuntimeOnPath(environment);
|
|
252
264
|
const invocation = /\.[cm]?js$/i.test(command) ? commandInvocation(process.execPath, [command, ...args], env) : commandInvocation(command, args, env);
|
|
@@ -274,6 +286,9 @@ function installationVersion(value) {
|
|
|
274
286
|
throw new Error("Harness returned an invalid version");
|
|
275
287
|
return value.trim().replace(/^v/, "");
|
|
276
288
|
}
|
|
289
|
+
function versionFromOutput(output) {
|
|
290
|
+
return installationVersion(output.match(/\b\d+(?:\.\d+){1,3}(?:-[\w.-]+)?(?:\+[\w.-]+)?\b/)?.[0]);
|
|
291
|
+
}
|
|
277
292
|
function createInstallationManager(options) {
|
|
278
293
|
let checking;
|
|
279
294
|
let updating;
|
|
@@ -15414,6 +15429,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
15414
15429
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
15415
15430
|
});
|
|
15416
15431
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
15432
|
+
"codexhost/voice/gateway-status",
|
|
15417
15433
|
"codexhost/console/remote-connections",
|
|
15418
15434
|
"codexhost/runtime/status",
|
|
15419
15435
|
"codexhost/remote/ssh-setup",
|
|
@@ -16523,6 +16539,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
16523
16539
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
16524
16540
|
]);
|
|
16525
16541
|
|
|
16542
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
16543
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
16544
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
16545
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
16546
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
16547
|
+
});
|
|
16548
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
16549
|
+
chatExperience: "chatgpt",
|
|
16550
|
+
chatConnection: "desktop",
|
|
16551
|
+
workConnection: "gateway"
|
|
16552
|
+
});
|
|
16553
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
16554
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
16555
|
+
external_exports.strictObject({
|
|
16556
|
+
operation: external_exports.literal("get"),
|
|
16557
|
+
runtime: external_exports.strictObject({
|
|
16558
|
+
id: external_exports.string().uuid(),
|
|
16559
|
+
revision: external_exports.string().max(64),
|
|
16560
|
+
activeCall: external_exports.boolean()
|
|
16561
|
+
}).optional()
|
|
16562
|
+
}),
|
|
16563
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
16564
|
+
external_exports.strictObject({
|
|
16565
|
+
operation: external_exports.literal("set"),
|
|
16566
|
+
settings: voiceSettingsSchema,
|
|
16567
|
+
revision: external_exports.string().max(64)
|
|
16568
|
+
}),
|
|
16569
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
16570
|
+
]);
|
|
16571
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
16572
|
+
settings: voiceSettingsSchema,
|
|
16573
|
+
initialized: external_exports.boolean(),
|
|
16574
|
+
revision: external_exports.string(),
|
|
16575
|
+
activeInject: external_exports.boolean().nullable(),
|
|
16576
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16577
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16578
|
+
routesActive: external_exports.boolean().nullable(),
|
|
16579
|
+
activeCall: external_exports.boolean().nullable(),
|
|
16580
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
16581
|
+
restartAvailable: external_exports.boolean(),
|
|
16582
|
+
restart: external_exports.strictObject({
|
|
16583
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
16584
|
+
error: external_exports.string().nullable()
|
|
16585
|
+
})
|
|
16586
|
+
});
|
|
16587
|
+
|
|
16526
16588
|
// ../../shared-contracts/dist/index.js
|
|
16527
16589
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
16528
16590
|
|
|
@@ -24006,8 +24068,12 @@ var GrokAcpTransport = class {
|
|
|
24006
24068
|
const response = await connection.request("session/set_model", {
|
|
24007
24069
|
sessionId: this.#sessionId,
|
|
24008
24070
|
modelId,
|
|
24009
|
-
...reasoningEffort
|
|
24010
|
-
|
|
24071
|
+
...reasoningEffort || contextWindowTokens !== void 0 ? {
|
|
24072
|
+
_meta: {
|
|
24073
|
+
...reasoningEffort ? { reasoningEffort } : {},
|
|
24074
|
+
...contextWindowTokens !== void 0 ? { contextWindow: contextWindowTokens } : {}
|
|
24075
|
+
}
|
|
24076
|
+
} : {}
|
|
24011
24077
|
});
|
|
24012
24078
|
if (!isRecord13(response) || !isRecord13(response._meta) || !isRecord13(response._meta.model)) {
|
|
24013
24079
|
throw new GrokTransportError("protocolError", "Grok rejected Model configuration");
|
|
@@ -26561,6 +26627,24 @@ function createGrokInstallation(environment, command) {
|
|
|
26561
26627
|
let installer = "";
|
|
26562
26628
|
return createInstallationManager({
|
|
26563
26629
|
async check() {
|
|
26630
|
+
const launcher = await readLauncherScript(resolveGrokExecutable({ environment, ...command ? { command } : {} }));
|
|
26631
|
+
if (launcher.includes("GROKGOD_HOME=") && launcher.includes("GROKGOD_BIN=")) {
|
|
26632
|
+
return {
|
|
26633
|
+
currentVersion: versionFromOutput(await run(["--version"], void 0, {
|
|
26634
|
+
GROK_DISABLE_AUTOUPDATER: "1",
|
|
26635
|
+
GROKGOD_UPDATE_CHECK_DISABLE: "1"
|
|
26636
|
+
})),
|
|
26637
|
+
latestVersion: "Unknown",
|
|
26638
|
+
latestVersionKind: "unknown",
|
|
26639
|
+
updateAvailable: false,
|
|
26640
|
+
canUpdate: false,
|
|
26641
|
+
messageCode: "original-installer",
|
|
26642
|
+
notice: {
|
|
26643
|
+
en: "Managed by grokgod. Use grokgod's updater or installer to preserve the installed patches. The latest patched version is not checked here.",
|
|
26644
|
+
"zh-CN": "此安装由 grokgod 管理。请使用 grokgod 的更新程序或安装程序保留补丁;此处不检查最新补丁版本。"
|
|
26645
|
+
}
|
|
26646
|
+
};
|
|
26647
|
+
}
|
|
26564
26648
|
const state = JSON.parse(await run(["update", "--check", "--json"]));
|
|
26565
26649
|
if (state.error || typeof state.updateAvailable !== "boolean")
|
|
26566
26650
|
throw new Error("Grok update check failed");
|
|
@@ -15184,6 +15184,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
|
|
|
15184
15184
|
url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
|
|
15185
15185
|
});
|
|
15186
15186
|
var CONSOLE_HOST_METHODS = Object.freeze([
|
|
15187
|
+
"codexhost/voice/gateway-status",
|
|
15187
15188
|
"codexhost/console/remote-connections",
|
|
15188
15189
|
"codexhost/runtime/status",
|
|
15189
15190
|
"codexhost/remote/ssh-setup",
|
|
@@ -16293,6 +16294,52 @@ var remoteConnectionsReplySchema = external_exports.union([
|
|
|
16293
16294
|
external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
|
|
16294
16295
|
]);
|
|
16295
16296
|
|
|
16297
|
+
// ../../shared-contracts/dist/voice-settings.js
|
|
16298
|
+
var voiceRoutesSchema = external_exports.strictObject({
|
|
16299
|
+
chatExperience: external_exports.enum(["chatgpt", "codex"]),
|
|
16300
|
+
chatConnection: external_exports.enum(["desktop", "gateway"]),
|
|
16301
|
+
workConnection: external_exports.enum(["desktop", "gateway"])
|
|
16302
|
+
});
|
|
16303
|
+
var DEFAULT_VOICE_ROUTES = Object.freeze({
|
|
16304
|
+
chatExperience: "chatgpt",
|
|
16305
|
+
chatConnection: "desktop",
|
|
16306
|
+
workConnection: "gateway"
|
|
16307
|
+
});
|
|
16308
|
+
var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
|
|
16309
|
+
var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
|
|
16310
|
+
external_exports.strictObject({
|
|
16311
|
+
operation: external_exports.literal("get"),
|
|
16312
|
+
runtime: external_exports.strictObject({
|
|
16313
|
+
id: external_exports.string().uuid(),
|
|
16314
|
+
revision: external_exports.string().max(64),
|
|
16315
|
+
activeCall: external_exports.boolean()
|
|
16316
|
+
}).optional()
|
|
16317
|
+
}),
|
|
16318
|
+
external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
|
|
16319
|
+
external_exports.strictObject({
|
|
16320
|
+
operation: external_exports.literal("set"),
|
|
16321
|
+
settings: voiceSettingsSchema,
|
|
16322
|
+
revision: external_exports.string().max(64)
|
|
16323
|
+
}),
|
|
16324
|
+
external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
|
|
16325
|
+
]);
|
|
16326
|
+
var voiceSettingsStateSchema = external_exports.strictObject({
|
|
16327
|
+
settings: voiceSettingsSchema,
|
|
16328
|
+
initialized: external_exports.boolean(),
|
|
16329
|
+
revision: external_exports.string(),
|
|
16330
|
+
activeInject: external_exports.boolean().nullable(),
|
|
16331
|
+
envOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16332
|
+
activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
|
|
16333
|
+
routesActive: external_exports.boolean().nullable(),
|
|
16334
|
+
activeCall: external_exports.boolean().nullable(),
|
|
16335
|
+
gatewayReady: external_exports.boolean().nullable(),
|
|
16336
|
+
restartAvailable: external_exports.boolean(),
|
|
16337
|
+
restart: external_exports.strictObject({
|
|
16338
|
+
phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
|
|
16339
|
+
error: external_exports.string().nullable()
|
|
16340
|
+
})
|
|
16341
|
+
});
|
|
16342
|
+
|
|
16296
16343
|
// ../../shared-contracts/dist/index.js
|
|
16297
16344
|
var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
|
|
16298
16345
|
|