@karlorz/codexhost-cli-win32-x64 0.13.3-5 → 0.13.3-7

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.
@@ -15229,6 +15229,7 @@ var consoleOpenResultSchema = external_exports.strictObject({
15229
15229
  url: external_exports.string().max(2048).regex(/^http:\/\/(?:127\.0\.0\.1|localhost):\d{1,5}\/(?:\?.*)?$/u)
15230
15230
  });
15231
15231
  var CONSOLE_HOST_METHODS = Object.freeze([
15232
+ "codexhost/voice/gateway-status",
15232
15233
  "codexhost/console/remote-connections",
15233
15234
  "codexhost/runtime/status",
15234
15235
  "codexhost/remote/ssh-setup",
@@ -15239,6 +15240,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15239
15240
  "codexhost/harness/installation",
15240
15241
  "codexhost/harness/launch-settings/get",
15241
15242
  "codexhost/harness/launch-settings/set",
15243
+ "codexhost/harness/grok-computer-use/get",
15244
+ "codexhost/harness/grok-computer-use/set",
15242
15245
  "codexhost/harness/web-ui/open",
15243
15246
  "codexhost/harness/accounts/sources",
15244
15247
  "codexhost/harness/accounts/list",
@@ -15767,7 +15770,9 @@ var harnessInspectionSchema = external_exports.union([
15767
15770
  var harnessInspectParamsSchema = external_exports.object({
15768
15771
  harnessId: harnessIdSchema,
15769
15772
  cwd: nonBlankTextSchema2.max(16384).optional(),
15770
- refresh: external_exports.boolean().optional()
15773
+ refresh: external_exports.boolean().optional(),
15774
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15775
+ purpose: external_exports.literal("availability").optional()
15771
15776
  }).strict();
15772
15777
  var harnessWebUiOpenParamsSchema = external_exports.object({
15773
15778
  harnessId: harnessIdSchema
@@ -15941,6 +15946,26 @@ var harnessLaunchSettingsSchema = external_exports.object({
15941
15946
  restartRequired: external_exports.boolean()
15942
15947
  }).strict();
15943
15948
 
15949
+ // ../../shared-contracts/dist/grok-computer-use.js
15950
+ var grokComputerUseGetSchema = external_exports.object({}).strict();
15951
+ var grokComputerUseSetSchema = external_exports.object({
15952
+ enabled: external_exports.boolean().optional(),
15953
+ browser: external_exports.boolean().optional()
15954
+ }).strict().refine((value) => value.enabled !== void 0 || value.browser !== void 0, {
15955
+ message: "Expected enabled or browser"
15956
+ });
15957
+ var grokComputerUseSettingsSchema = external_exports.object({
15958
+ enabled: external_exports.boolean(),
15959
+ available: external_exports.boolean(),
15960
+ unavailableReason: external_exports.string().min(1).max(500).optional(),
15961
+ browser: external_exports.boolean().optional(),
15962
+ browserFilesPresent: external_exports.boolean().optional(),
15963
+ browserAvailable: external_exports.boolean().optional(),
15964
+ browserUnavailableReason: external_exports.string().min(1).max(500).optional(),
15965
+ applyFailed: external_exports.boolean().optional(),
15966
+ applyError: external_exports.string().min(1).max(500).optional()
15967
+ }).strict();
15968
+
15944
15969
  // ../../shared-contracts/dist/harness-installation.js
15945
15970
  var harnessInstallationParamsSchema = external_exports.object({
15946
15971
  harnessId: harnessIdSchema,
@@ -16338,6 +16363,52 @@ var remoteConnectionsReplySchema = external_exports.union([
16338
16363
  external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
16339
16364
  ]);
16340
16365
 
16366
+ // ../../shared-contracts/dist/voice-settings.js
16367
+ var voiceRoutesSchema = external_exports.strictObject({
16368
+ chatExperience: external_exports.enum(["chatgpt", "codex"]),
16369
+ chatConnection: external_exports.enum(["desktop", "gateway"]),
16370
+ workConnection: external_exports.enum(["desktop", "gateway"])
16371
+ });
16372
+ var DEFAULT_VOICE_ROUTES = Object.freeze({
16373
+ chatExperience: "chatgpt",
16374
+ chatConnection: "desktop",
16375
+ workConnection: "gateway"
16376
+ });
16377
+ var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
16378
+ var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
16379
+ external_exports.strictObject({
16380
+ operation: external_exports.literal("get"),
16381
+ runtime: external_exports.strictObject({
16382
+ id: external_exports.string().uuid(),
16383
+ revision: external_exports.string().max(64),
16384
+ activeCall: external_exports.boolean()
16385
+ }).optional()
16386
+ }),
16387
+ external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
16388
+ external_exports.strictObject({
16389
+ operation: external_exports.literal("set"),
16390
+ settings: voiceSettingsSchema,
16391
+ revision: external_exports.string().max(64)
16392
+ }),
16393
+ external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
16394
+ ]);
16395
+ var voiceSettingsStateSchema = external_exports.strictObject({
16396
+ settings: voiceSettingsSchema,
16397
+ initialized: external_exports.boolean(),
16398
+ revision: external_exports.string(),
16399
+ activeInject: external_exports.boolean().nullable(),
16400
+ envOverride: external_exports.enum(["0", "1"]).nullable(),
16401
+ activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
16402
+ routesActive: external_exports.boolean().nullable(),
16403
+ activeCall: external_exports.boolean().nullable(),
16404
+ gatewayReady: external_exports.boolean().nullable(),
16405
+ restartAvailable: external_exports.boolean(),
16406
+ restart: external_exports.strictObject({
16407
+ phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
16408
+ error: external_exports.string().nullable()
16409
+ })
16410
+ });
16411
+
16341
16412
  // ../../shared-contracts/dist/index.js
16342
16413
  var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
16343
16414
 
@@ -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",
@@ -14833,6 +14834,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
14833
14834
  "codexhost/harness/installation",
14834
14835
  "codexhost/harness/launch-settings/get",
14835
14836
  "codexhost/harness/launch-settings/set",
14837
+ "codexhost/harness/grok-computer-use/get",
14838
+ "codexhost/harness/grok-computer-use/set",
14836
14839
  "codexhost/harness/web-ui/open",
14837
14840
  "codexhost/harness/accounts/sources",
14838
14841
  "codexhost/harness/accounts/list",
@@ -15361,7 +15364,9 @@ var harnessInspectionSchema = external_exports.union([
15361
15364
  var harnessInspectParamsSchema = external_exports.object({
15362
15365
  harnessId: harnessIdSchema,
15363
15366
  cwd: nonBlankTextSchema2.max(16384).optional(),
15364
- refresh: external_exports.boolean().optional()
15367
+ refresh: external_exports.boolean().optional(),
15368
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15369
+ purpose: external_exports.literal("availability").optional()
15365
15370
  }).strict();
15366
15371
  var harnessWebUiOpenParamsSchema = external_exports.object({
15367
15372
  harnessId: harnessIdSchema
@@ -15535,6 +15540,26 @@ var harnessLaunchSettingsSchema = external_exports.object({
15535
15540
  restartRequired: external_exports.boolean()
15536
15541
  }).strict();
15537
15542
 
15543
+ // ../../shared-contracts/dist/grok-computer-use.js
15544
+ var grokComputerUseGetSchema = external_exports.object({}).strict();
15545
+ var grokComputerUseSetSchema = external_exports.object({
15546
+ enabled: external_exports.boolean().optional(),
15547
+ browser: external_exports.boolean().optional()
15548
+ }).strict().refine((value) => value.enabled !== void 0 || value.browser !== void 0, {
15549
+ message: "Expected enabled or browser"
15550
+ });
15551
+ var grokComputerUseSettingsSchema = external_exports.object({
15552
+ enabled: external_exports.boolean(),
15553
+ available: external_exports.boolean(),
15554
+ unavailableReason: external_exports.string().min(1).max(500).optional(),
15555
+ browser: external_exports.boolean().optional(),
15556
+ browserFilesPresent: external_exports.boolean().optional(),
15557
+ browserAvailable: external_exports.boolean().optional(),
15558
+ browserUnavailableReason: external_exports.string().min(1).max(500).optional(),
15559
+ applyFailed: external_exports.boolean().optional(),
15560
+ applyError: external_exports.string().min(1).max(500).optional()
15561
+ }).strict();
15562
+
15538
15563
  // ../../shared-contracts/dist/harness-installation.js
15539
15564
  var harnessInstallationParamsSchema = external_exports.object({
15540
15565
  harnessId: harnessIdSchema,
@@ -15932,6 +15957,52 @@ var remoteConnectionsReplySchema = external_exports.union([
15932
15957
  external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
15933
15958
  ]);
15934
15959
 
15960
+ // ../../shared-contracts/dist/voice-settings.js
15961
+ var voiceRoutesSchema = external_exports.strictObject({
15962
+ chatExperience: external_exports.enum(["chatgpt", "codex"]),
15963
+ chatConnection: external_exports.enum(["desktop", "gateway"]),
15964
+ workConnection: external_exports.enum(["desktop", "gateway"])
15965
+ });
15966
+ var DEFAULT_VOICE_ROUTES = Object.freeze({
15967
+ chatExperience: "chatgpt",
15968
+ chatConnection: "desktop",
15969
+ workConnection: "gateway"
15970
+ });
15971
+ var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
15972
+ var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
15973
+ external_exports.strictObject({
15974
+ operation: external_exports.literal("get"),
15975
+ runtime: external_exports.strictObject({
15976
+ id: external_exports.string().uuid(),
15977
+ revision: external_exports.string().max(64),
15978
+ activeCall: external_exports.boolean()
15979
+ }).optional()
15980
+ }),
15981
+ external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
15982
+ external_exports.strictObject({
15983
+ operation: external_exports.literal("set"),
15984
+ settings: voiceSettingsSchema,
15985
+ revision: external_exports.string().max(64)
15986
+ }),
15987
+ external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
15988
+ ]);
15989
+ var voiceSettingsStateSchema = external_exports.strictObject({
15990
+ settings: voiceSettingsSchema,
15991
+ initialized: external_exports.boolean(),
15992
+ revision: external_exports.string(),
15993
+ activeInject: external_exports.boolean().nullable(),
15994
+ envOverride: external_exports.enum(["0", "1"]).nullable(),
15995
+ activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
15996
+ routesActive: external_exports.boolean().nullable(),
15997
+ activeCall: external_exports.boolean().nullable(),
15998
+ gatewayReady: external_exports.boolean().nullable(),
15999
+ restartAvailable: external_exports.boolean(),
16000
+ restart: external_exports.strictObject({
16001
+ phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
16002
+ error: external_exports.string().nullable()
16003
+ })
16004
+ });
16005
+
15935
16006
  // ../../shared-contracts/dist/index.js
15936
16007
  var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
15937
16008
 
@@ -17522,10 +17593,13 @@ function usageSessionTitle(value) {
17522
17593
  return void 0;
17523
17594
  if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
17524
17595
  return normalized;
17525
- const characters = [...normalized];
17526
- if (characters.length <= MAX_SESSION_TITLE_LENGTH)
17527
- return normalized;
17528
- return `${characters.slice(0, MAX_SESSION_TITLE_LENGTH - 1).join("").trimEnd()}…`;
17596
+ let title = "";
17597
+ for (const character of normalized) {
17598
+ if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
17599
+ break;
17600
+ title += character;
17601
+ }
17602
+ return `${title.trimEnd()}…`;
17529
17603
  }
17530
17604
  function sessionIdOk(value) {
17531
17605
  return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
@@ -53901,7 +53975,19 @@ function resolveHarnessExecutable(spec, input, dependencies = {}) {
53901
53975
 
53902
53976
  // ../../harness-discovery/dist/installation.js
53903
53977
  import { execFile as execFile2 } from "node:child_process";
53978
+ import { open as open3 } from "node:fs/promises";
53904
53979
  import { homedir } from "node:os";
53980
+ async function readLauncherScript(command) {
53981
+ const file2 = await open3(command, "r");
53982
+ try {
53983
+ const buffer = Buffer.alloc(4096);
53984
+ const { bytesRead } = await file2.read(buffer, 0, buffer.length, 0);
53985
+ const prefix = buffer.toString("utf8", 0, bytesRead);
53986
+ return prefix.startsWith("#!") || /\.(cmd|bat|ps1)$/i.test(command) ? prefix : "";
53987
+ } finally {
53988
+ await file2.close();
53989
+ }
53990
+ }
53905
53991
  function runInstallationCommand(command, args, environment, timeout = 3e4) {
53906
53992
  const env = withNodeRuntimeOnPath(environment);
53907
53993
  const invocation = /\.[cm]?js$/i.test(command) ? commandInvocation(process.execPath, [command, ...args], env) : commandInvocation(command, args, env);
@@ -54193,7 +54279,7 @@ function resolveClaudeCodeExecutable(input = {}, dependencies = {}) {
54193
54279
 
54194
54280
  // dist/pending-session.js
54195
54281
  import { randomUUID as randomUUID3 } from "node:crypto";
54196
- import { mkdir as mkdir3, open as open3, readFile as readFile4, rename as rename3, rm as rm4, stat as stat3, unlink as unlink2 } from "node:fs/promises";
54282
+ 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
54283
  import os5 from "node:os";
54198
54284
  import path10 from "node:path";
54199
54285
  var reservationSchema = external_exports.strictObject({
@@ -54233,7 +54319,7 @@ var ClaudePendingSessions = class {
54233
54319
  await mkdir3(this.#directory, { recursive: true, mode: 448 });
54234
54320
  await mkdir3(directory, { mode: 448 });
54235
54321
  try {
54236
- const file2 = await open3(path10.join(directory, "session.json"), "wx", 384);
54322
+ const file2 = await open4(path10.join(directory, "session.json"), "wx", 384);
54237
54323
  try {
54238
54324
  await file2.writeFile(JSON.stringify(reservation));
54239
54325
  await file2.sync();
@@ -54271,7 +54357,7 @@ var ClaudePendingSessions = class {
54271
54357
  const directory = this.#path(ref, cwd);
54272
54358
  const temporary = path10.join(directory, `${randomUUID3()}.tmp`);
54273
54359
  try {
54274
- const file2 = await open3(temporary, "wx", 384);
54360
+ const file2 = await open4(temporary, "wx", 384);
54275
54361
  try {
54276
54362
  await file2.writeFile(JSON.stringify(reservationSchema.parse({
54277
54363
  version: 1,
@@ -54292,7 +54378,7 @@ var ClaudePendingSessions = class {
54292
54378
  async #sync(directory) {
54293
54379
  if (process.platform === "win32")
54294
54380
  return;
54295
- const handle = await open3(directory, "r");
54381
+ const handle = await open4(directory, "r");
54296
54382
  try {
54297
54383
  await handle.sync();
54298
54384
  } finally {
@@ -54301,7 +54387,7 @@ var ClaudePendingSessions = class {
54301
54387
  }
54302
54388
  async claim(ref, cwd) {
54303
54389
  await this.read(ref, cwd);
54304
- const claim = await open3(path10.join(this.#path(ref, cwd), "started"), "wx", 384);
54390
+ const claim = await open4(path10.join(this.#path(ref, cwd), "started"), "wx", 384);
54305
54391
  try {
54306
54392
  await claim.sync();
54307
54393
  } finally {
@@ -54457,6 +54543,12 @@ function subagentRole(argumentsValue) {
54457
54543
  function subagentBackground(argumentsValue) {
54458
54544
  return isRecord7(argumentsValue) && argumentsValue.run_in_background === true;
54459
54545
  }
54546
+ function subagentModel(argumentsValue) {
54547
+ if (!isRecord7(argumentsValue))
54548
+ return void 0;
54549
+ const model2 = boundedString(argumentsValue.model, SUBAGENT_DESCRIPTION_LIMIT);
54550
+ return model2 === "inherit" ? void 0 : model2;
54551
+ }
54460
54552
  function targetedSubagentId(argumentsValue) {
54461
54553
  if (!isRecord7(argumentsValue))
54462
54554
  return void 0;
@@ -54730,6 +54822,10 @@ var ClaudeNativeTurnAccumulator = class {
54730
54822
  const parentTool = parentCallId ? this.#tools.get(parentCallId) : void 0;
54731
54823
  if (parentCallId && parentTool && (message.type === "assistant" || message.type === "user")) {
54732
54824
  if (parentTool.subagent) {
54825
+ const model2 = message.type === "assistant" ? subagentModel(message.message) : void 0;
54826
+ if (model2 && model2 !== "<synthetic>") {
54827
+ events.push({ type: "subagent.updated", callId: parentCallId, status: "running", model: model2 });
54828
+ }
54733
54829
  events.push({ type: "subagent.transcript.changed", callId: parentCallId });
54734
54830
  } else if (parentTool.workflow) {
54735
54831
  events.push({ type: "workflow.activity", callId: parentCallId });
@@ -55099,6 +55195,7 @@ var ClaudeNativeTurnAccumulator = class {
55099
55195
  } else if (subagent) {
55100
55196
  const prompt = subagentPrompt(argumentsResult.data);
55101
55197
  const role = subagentRole(argumentsResult.data);
55198
+ const model2 = block.name === "SendMessage" ? void 0 : subagentModel(argumentsResult.data);
55102
55199
  const agentId = targetedSubagentId(argumentsResult.data);
55103
55200
  events.push({
55104
55201
  type: "subagent.started",
@@ -55107,6 +55204,7 @@ var ClaudeNativeTurnAccumulator = class {
55107
55204
  description: subagentDescription(argumentsResult.data, block.name),
55108
55205
  ...prompt ? { prompt } : {},
55109
55206
  ...role ? { role } : {},
55207
+ ...model2 ? { model: model2 } : {},
55110
55208
  background: block.name === "SendMessage" || subagentBackground(argumentsResult.data),
55111
55209
  ...agentId ? { nativeSubagentId: agentId } : {}
55112
55210
  });
@@ -57707,6 +57805,7 @@ var ClaudeSubagentLifecycle = class {
57707
57805
  ...event.nativeSubagentId ? { nativeSubagentId: event.nativeSubagentId } : {},
57708
57806
  description: event.description,
57709
57807
  ...event.role ? { role: event.role } : {},
57808
+ ...event.model ? { model: event.model } : {},
57710
57809
  background: event.background,
57711
57810
  status: "running"
57712
57811
  };
@@ -57733,6 +57832,7 @@ var ClaudeSubagentLifecycle = class {
57733
57832
  ...event.nativeSubagentId ? { nativeSubagentId: event.nativeSubagentId } : {},
57734
57833
  ...event.description ? { description: event.description } : {},
57735
57834
  ...event.role ? { role: event.role } : {},
57835
+ ...event.model ? { model: event.model } : {},
57736
57836
  ...event.resultSummary ? { resultSummary: event.resultSummary } : {}
57737
57837
  };
57738
57838
  active.item = { ...active.item, subagents: [subagent] };
@@ -58067,7 +58167,7 @@ var ClaudeTaskTracker = class {
58067
58167
  };
58068
58168
 
58069
58169
  // dist/background-command-items.js
58070
- import { open as open4 } from "node:fs/promises";
58170
+ import { open as open5 } from "node:fs/promises";
58071
58171
  import { StringDecoder } from "node:string_decoder";
58072
58172
  var POLL_INTERVAL_MS = 1e3;
58073
58173
  var READ_CHUNK_BYTES = 64 * 1024;
@@ -58150,7 +58250,7 @@ var ClaudeBackgroundCommandItems = class {
58150
58250
  return;
58151
58251
  let handle;
58152
58252
  try {
58153
- handle = await open4(followed.outputFile, "r");
58253
+ handle = await open5(followed.outputFile, "r");
58154
58254
  } catch {
58155
58255
  return;
58156
58256
  }
@@ -61174,6 +61274,24 @@ function createClaudeInstallation(environment, command) {
61174
61274
  environment,
61175
61275
  ...command ? { command } : {}
61176
61276
  });
61277
+ const launcherScript = await readLauncherScript(executable);
61278
+ if (launcherScript.includes("CLAWGOD_CLI=")) {
61279
+ return {
61280
+ currentVersion: versionFromOutput(await runInstallationCommand(executable, ["--version"], {
61281
+ ...environment,
61282
+ DISABLE_AUTOUPDATER: "1"
61283
+ })),
61284
+ latestVersion: "Unknown",
61285
+ latestVersionKind: "unknown",
61286
+ updateAvailable: false,
61287
+ canUpdate: false,
61288
+ messageCode: "original-installer",
61289
+ notice: {
61290
+ en: "Managed by clawgod. Use clawgod's updater or installer to preserve the installed patches. The latest patched version is not checked here.",
61291
+ "zh-CN": "此安装由 clawgod 管理。请使用 clawgod 的更新程序或安装程序保留补丁;此处不检查最新补丁版本。"
61292
+ }
61293
+ };
61294
+ }
61177
61295
  const home = environment.HOME ?? environment.USERPROFILE ?? homedir2();
61178
61296
  const config2 = environment.CLAUDE_CONFIG_DIR ? path17.resolve(home, environment.CLAUDE_CONFIG_DIR) : path17.join(home, ".claude");
61179
61297
  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",
@@ -15309,6 +15310,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15309
15310
  "codexhost/harness/installation",
15310
15311
  "codexhost/harness/launch-settings/get",
15311
15312
  "codexhost/harness/launch-settings/set",
15313
+ "codexhost/harness/grok-computer-use/get",
15314
+ "codexhost/harness/grok-computer-use/set",
15312
15315
  "codexhost/harness/web-ui/open",
15313
15316
  "codexhost/harness/accounts/sources",
15314
15317
  "codexhost/harness/accounts/list",
@@ -15837,7 +15840,9 @@ var harnessInspectionSchema = external_exports.union([
15837
15840
  var harnessInspectParamsSchema = external_exports.object({
15838
15841
  harnessId: harnessIdSchema,
15839
15842
  cwd: nonBlankTextSchema2.max(16384).optional(),
15840
- refresh: external_exports.boolean().optional()
15843
+ refresh: external_exports.boolean().optional(),
15844
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15845
+ purpose: external_exports.literal("availability").optional()
15841
15846
  }).strict();
15842
15847
  var harnessWebUiOpenParamsSchema = external_exports.object({
15843
15848
  harnessId: harnessIdSchema
@@ -16011,6 +16016,26 @@ var harnessLaunchSettingsSchema = external_exports.object({
16011
16016
  restartRequired: external_exports.boolean()
16012
16017
  }).strict();
16013
16018
 
16019
+ // ../../shared-contracts/dist/grok-computer-use.js
16020
+ var grokComputerUseGetSchema = external_exports.object({}).strict();
16021
+ var grokComputerUseSetSchema = external_exports.object({
16022
+ enabled: external_exports.boolean().optional(),
16023
+ browser: external_exports.boolean().optional()
16024
+ }).strict().refine((value) => value.enabled !== void 0 || value.browser !== void 0, {
16025
+ message: "Expected enabled or browser"
16026
+ });
16027
+ var grokComputerUseSettingsSchema = external_exports.object({
16028
+ enabled: external_exports.boolean(),
16029
+ available: external_exports.boolean(),
16030
+ unavailableReason: external_exports.string().min(1).max(500).optional(),
16031
+ browser: external_exports.boolean().optional(),
16032
+ browserFilesPresent: external_exports.boolean().optional(),
16033
+ browserAvailable: external_exports.boolean().optional(),
16034
+ browserUnavailableReason: external_exports.string().min(1).max(500).optional(),
16035
+ applyFailed: external_exports.boolean().optional(),
16036
+ applyError: external_exports.string().min(1).max(500).optional()
16037
+ }).strict();
16038
+
16014
16039
  // ../../shared-contracts/dist/harness-installation.js
16015
16040
  var harnessInstallationParamsSchema = external_exports.object({
16016
16041
  harnessId: harnessIdSchema,
@@ -16408,6 +16433,52 @@ var remoteConnectionsReplySchema = external_exports.union([
16408
16433
  external_exports.strictObject({ error: external_exports.strictObject({ code: external_exports.number().int(), message: external_exports.string() }) })
16409
16434
  ]);
16410
16435
 
16436
+ // ../../shared-contracts/dist/voice-settings.js
16437
+ var voiceRoutesSchema = external_exports.strictObject({
16438
+ chatExperience: external_exports.enum(["chatgpt", "codex"]),
16439
+ chatConnection: external_exports.enum(["desktop", "gateway"]),
16440
+ workConnection: external_exports.enum(["desktop", "gateway"])
16441
+ });
16442
+ var DEFAULT_VOICE_ROUTES = Object.freeze({
16443
+ chatExperience: "chatgpt",
16444
+ chatConnection: "desktop",
16445
+ workConnection: "gateway"
16446
+ });
16447
+ var voiceSettingsSchema = voiceRoutesSchema.extend({ inject: external_exports.boolean() });
16448
+ var voiceSettingsRequestSchema = external_exports.discriminatedUnion("operation", [
16449
+ external_exports.strictObject({
16450
+ operation: external_exports.literal("get"),
16451
+ runtime: external_exports.strictObject({
16452
+ id: external_exports.string().uuid(),
16453
+ revision: external_exports.string().max(64),
16454
+ activeCall: external_exports.boolean()
16455
+ }).optional()
16456
+ }),
16457
+ external_exports.strictObject({ operation: external_exports.literal("migrate"), routes: voiceRoutesSchema }),
16458
+ external_exports.strictObject({
16459
+ operation: external_exports.literal("set"),
16460
+ settings: voiceSettingsSchema,
16461
+ revision: external_exports.string().max(64)
16462
+ }),
16463
+ external_exports.strictObject({ operation: external_exports.literal("restart"), confirm: external_exports.literal(true) })
16464
+ ]);
16465
+ var voiceSettingsStateSchema = external_exports.strictObject({
16466
+ settings: voiceSettingsSchema,
16467
+ initialized: external_exports.boolean(),
16468
+ revision: external_exports.string(),
16469
+ activeInject: external_exports.boolean().nullable(),
16470
+ envOverride: external_exports.enum(["0", "1"]).nullable(),
16471
+ activeEnvOverride: external_exports.enum(["0", "1"]).nullable(),
16472
+ routesActive: external_exports.boolean().nullable(),
16473
+ activeCall: external_exports.boolean().nullable(),
16474
+ gatewayReady: external_exports.boolean().nullable(),
16475
+ restartAvailable: external_exports.boolean(),
16476
+ restart: external_exports.strictObject({
16477
+ phase: external_exports.enum(["idle", "restarting", "succeeded", "failed"]),
16478
+ error: external_exports.string().nullable()
16479
+ })
16480
+ });
16481
+
16411
16482
  // ../../shared-contracts/dist/index.js
16412
16483
  var workspaceContractVersionSchema = external_exports.literal(WORKSPACE_CONTRACT_VERSION);
16413
16484
 
@@ -17008,10 +17079,13 @@ function usageSessionTitle(value) {
17008
17079
  return void 0;
17009
17080
  if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
17010
17081
  return normalized;
17011
- const characters = [...normalized];
17012
- if (characters.length <= MAX_SESSION_TITLE_LENGTH)
17013
- return normalized;
17014
- return `${characters.slice(0, MAX_SESSION_TITLE_LENGTH - 1).join("").trimEnd()}…`;
17082
+ let title = "";
17083
+ for (const character of normalized) {
17084
+ if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
17085
+ break;
17086
+ title += character;
17087
+ }
17088
+ return `${title.trimEnd()}…`;
17015
17089
  }
17016
17090
  function sessionIdOk(value) {
17017
17091
  return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;