@karlorz/codexhost-cli-darwin-x64 0.13.3-6 → 0.14.0-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.
Files changed (33) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +539 -95
  4. package/app/console-web.js +879 -73
  5. package/app/cpa-live-voice-hook.js +605 -37
  6. package/app/desktop-controller.mjs +94 -9
  7. package/app/host-runtime.mjs +1662 -642
  8. package/app/plugins/antigravity/plugin.mjs +113 -13
  9. package/app/plugins/claude-code/plugin.mjs +429 -26
  10. package/app/plugins/codebuddy/plugin.mjs +139 -22
  11. package/app/plugins/codex-usage/plugin.mjs +198 -74
  12. package/app/plugins/copilot/assets/icon.png +0 -0
  13. package/app/plugins/copilot/manifest.json +26 -0
  14. package/app/plugins/copilot/plugin.mjs +34645 -0
  15. package/app/plugins/cursor-cli/plugin.mjs +20877 -44973
  16. package/app/plugins/deepseek-harness/plugin.mjs +105 -11
  17. package/app/plugins/enabled.json +1 -0
  18. package/app/plugins/grok/plugin.mjs +1073 -214
  19. package/app/plugins/hermes/plugin.mjs +102 -9
  20. package/app/plugins/kimi-code/plugin.mjs +98 -7
  21. package/app/plugins/kiro-cli/plugin.mjs +98 -7
  22. package/app/plugins/omp/plugin.mjs +2177 -2000
  23. package/app/plugins/opencode/plugin.mjs +107 -11
  24. package/app/plugins/pi/plugin.mjs +2554 -2285
  25. package/app/plugins/qoder/plugin.mjs +105 -11
  26. package/app/plugins/qoder-cn/plugin.mjs +105 -11
  27. package/app/plugins/workbuddy/plugin.mjs +400 -46
  28. package/app/plugins/zcode/plugin.mjs +106 -11
  29. package/app/renderer-extension.js +2717 -1237
  30. package/bin/codexhost +0 -0
  31. package/libexec/codexhost-shim +0 -0
  32. package/libexec/codexhost-updater +0 -0
  33. package/package.json +1 -1
@@ -504,10 +504,13 @@ function usageSessionTitle(value) {
504
504
  return void 0;
505
505
  if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
506
506
  return normalized;
507
- const characters = [...normalized];
508
- if (characters.length <= MAX_SESSION_TITLE_LENGTH)
509
- return normalized;
510
- return `${characters.slice(0, MAX_SESSION_TITLE_LENGTH - 1).join("").trimEnd()}…`;
507
+ let title = "";
508
+ for (const character of normalized) {
509
+ if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
510
+ break;
511
+ title += character;
512
+ }
513
+ return `${title.trimEnd()}…`;
511
514
  }
512
515
  function sessionIdOk(value) {
513
516
  return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
@@ -15199,10 +15202,19 @@ var model = external_exports.string().min(1).max(512);
15199
15202
  var project = external_exports.string().min(1).max(4096);
15200
15203
  var usageStatisticsParamsSchema = external_exports.strictObject({
15201
15204
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15205
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
15206
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
15207
+ try {
15208
+ new Intl.DateTimeFormat("en", { timeZone: value });
15209
+ return true;
15210
+ } catch {
15211
+ return false;
15212
+ }
15213
+ }, "Unsupported usage statistics timezone").optional(),
15202
15214
  harness: harness.optional(),
15203
15215
  model: model.nullable().optional(),
15204
15216
  project: project.nullable().optional(),
15205
- /** One local date inside the range. */
15217
+ /** One date in the query timezone inside the range. */
15206
15218
  date: localDate.optional()
15207
15219
  });
15208
15220
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -15238,7 +15250,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
15238
15250
  });
15239
15251
  var usageStatisticsResultSchema = external_exports.strictObject({
15240
15252
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15241
- /** First local date of the range; null for all time. */
15253
+ /** First date in the query timezone (Host local when omitted); null for all time. */
15242
15254
  from: localDate.nullable(),
15243
15255
  to: localDate,
15244
15256
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15278,7 +15290,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15278
15290
  totals: usageStatisticsTotalsSchema,
15279
15291
  /** Each date and Harness of the range: every filter except the day. */
15280
15292
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15281
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15293
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15282
15294
  hourly: external_exports.array(external_exports.strictObject({
15283
15295
  weekday: external_exports.number().int().min(0).max(6),
15284
15296
  hour: external_exports.number().int().min(0).max(23),
@@ -15369,8 +15381,12 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15369
15381
  "codexhost/harness/display-settings/set",
15370
15382
  "codexhost/harness/inspect",
15371
15383
  "codexhost/harness/installation",
15384
+ "codexhost/harness/installation/start",
15385
+ "codexhost/harness/installation/status",
15372
15386
  "codexhost/harness/launch-settings/get",
15373
15387
  "codexhost/harness/launch-settings/set",
15388
+ "codexhost/harness/grok-computer-use/get",
15389
+ "codexhost/harness/grok-computer-use/set",
15374
15390
  "codexhost/harness/web-ui/open",
15375
15391
  "codexhost/harness/accounts/sources",
15376
15392
  "codexhost/harness/accounts/list",
@@ -15444,7 +15460,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15444
15460
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15445
15461
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15446
15462
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15463
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15464
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15465
+ kind: external_exports.literal("countdown"),
15466
+ id: external_exports.string().min(1).max(64),
15467
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15468
+ label: indicatorTextSchema(256).optional(),
15469
+ tooltip: indicatorTextSchema(1024).optional()
15470
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15471
+ message: "Composer indicator IDs must be unique"
15472
+ });
15447
15473
  var threadUsageSnapshotSchema = external_exports.object({
15474
+ composerIndicators: composerIndicatorsSchema.optional(),
15448
15475
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15449
15476
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15450
15477
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15852,7 +15879,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15852
15879
  }).strict().optional(),
15853
15880
  autonomousTurns: external_exports.object({
15854
15881
  observe: external_exports.boolean()
15855
- }).strict().optional()
15882
+ }).strict().optional(),
15883
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15884
+ steer: external_exports.boolean().optional()
15856
15885
  }).strict();
15857
15886
  var harnessConfigurationStateSchema = external_exports.object({
15858
15887
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15899,7 +15928,9 @@ var harnessInspectionSchema = external_exports.union([
15899
15928
  var harnessInspectParamsSchema = external_exports.object({
15900
15929
  harnessId: harnessIdSchema,
15901
15930
  cwd: nonBlankTextSchema2.max(16384).optional(),
15902
- refresh: external_exports.boolean().optional()
15931
+ refresh: external_exports.boolean().optional(),
15932
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15933
+ purpose: external_exports.literal("availability").optional()
15903
15934
  }).strict();
15904
15935
  var harnessWebUiOpenParamsSchema = external_exports.object({
15905
15936
  harnessId: harnessIdSchema
@@ -15982,6 +16013,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15982
16013
  seen.add(thread.threadId);
15983
16014
  }
15984
16015
  });
16016
+ var threadSteeringInspectParamsSchema = external_exports.object({
16017
+ threadId: hostThreadIdSchema,
16018
+ /** The text about to be steered; a Harness command always stops and restarts. */
16019
+ text: external_exports.string().optional()
16020
+ }).strict();
16021
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
16022
+ var threadSteeringInspectResultSchema = external_exports.object({
16023
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
16024
+ }).strict();
15985
16025
 
15986
16026
  // ../../shared-contracts/dist/harness-plugins.js
15987
16027
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -16073,6 +16113,26 @@ var harnessLaunchSettingsSchema = external_exports.object({
16073
16113
  restartRequired: external_exports.boolean()
16074
16114
  }).strict();
16075
16115
 
16116
+ // ../../shared-contracts/dist/grok-computer-use.js
16117
+ var grokComputerUseGetSchema = external_exports.object({}).strict();
16118
+ var grokComputerUseSetSchema = external_exports.object({
16119
+ enabled: external_exports.boolean().optional(),
16120
+ browser: external_exports.boolean().optional()
16121
+ }).strict().refine((value) => value.enabled !== void 0 || value.browser !== void 0, {
16122
+ message: "Expected enabled or browser"
16123
+ });
16124
+ var grokComputerUseSettingsSchema = external_exports.object({
16125
+ enabled: external_exports.boolean(),
16126
+ available: external_exports.boolean(),
16127
+ unavailableReason: external_exports.string().min(1).max(500).optional(),
16128
+ browser: external_exports.boolean().optional(),
16129
+ browserFilesPresent: external_exports.boolean().optional(),
16130
+ browserAvailable: external_exports.boolean().optional(),
16131
+ browserUnavailableReason: external_exports.string().min(1).max(500).optional(),
16132
+ applyFailed: external_exports.boolean().optional(),
16133
+ applyError: external_exports.string().min(1).max(500).optional()
16134
+ }).strict();
16135
+
16076
16136
  // ../../shared-contracts/dist/harness-installation.js
16077
16137
  var harnessInstallationParamsSchema = external_exports.object({
16078
16138
  harnessId: harnessIdSchema,
@@ -16083,6 +16143,10 @@ var harnessInstallationStateSchema = external_exports.object({
16083
16143
  latestVersion: external_exports.string().min(1).max(128),
16084
16144
  updateAvailable: external_exports.boolean(),
16085
16145
  canUpdate: external_exports.boolean(),
16146
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
16147
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
16148
+ /** Official download opened by the user; does not imply an automatic installation. */
16149
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
16086
16150
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
16087
16151
  message: external_exports.string().max(2048).optional(),
16088
16152
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -16090,6 +16154,20 @@ var harnessInstallationStateSchema = external_exports.object({
16090
16154
  notice: harnessLocalizedTextSchema.optional(),
16091
16155
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
16092
16156
  }).strict();
16157
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
16158
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
16159
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
16160
+ external_exports.object({
16161
+ taskId: external_exports.string().uuid(),
16162
+ status: external_exports.literal("succeeded"),
16163
+ result: harnessInstallationStateSchema
16164
+ }).strict(),
16165
+ external_exports.object({
16166
+ taskId: external_exports.string().uuid(),
16167
+ status: external_exports.literal("failed"),
16168
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
16169
+ }).strict()
16170
+ ]);
16093
16171
 
16094
16172
  // ../../shared-contracts/dist/codex-accounts.js
16095
16173
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16621,6 +16699,18 @@ function sanitizeDiagnosticTail(value) {
16621
16699
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16622
16700
  }
16623
16701
 
16702
+ // ../../harness-adapter/dist/steer.js
16703
+ function unsupportedSteer(harnessLabel) {
16704
+ return {
16705
+ ok: false,
16706
+ error: {
16707
+ code: "unsupported",
16708
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16709
+ retryable: false
16710
+ }
16711
+ };
16712
+ }
16713
+
16624
16714
  // ../../harness-adapter/dist/usage.js
16625
16715
  var tokenFields = [
16626
16716
  "inputTokens",
@@ -16648,6 +16738,7 @@ var usageFields = /* @__PURE__ */ new Set([
16648
16738
  ...safeIntegerFields,
16649
16739
  ...percentFields,
16650
16740
  "sessionCacheUsage",
16741
+ "composerIndicators",
16651
16742
  "totalCostUsd",
16652
16743
  "totalCredits",
16653
16744
  "contextUsagePercent",
@@ -16670,6 +16761,7 @@ function parseHostUsage(value) {
16670
16761
  throw new Error(`Harness Usage contains unknown field '${key}'`);
16671
16762
  }
16672
16763
  }
16764
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
16673
16765
  for (const field of [
16674
16766
  "totalCredits",
16675
16767
  "contextUsagePercent",
@@ -16740,9 +16832,9 @@ function parseHostUsage(value) {
16740
16832
  if (value.costSource !== "publicPrice") {
16741
16833
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
16742
16834
  }
16743
- return { ...value, unpricedModels: [...models] };
16835
+ return { ...value, ...indicators, unpricedModels: [...models] };
16744
16836
  }
16745
- return { ...value };
16837
+ return { ...value, ...indicators };
16746
16838
  }
16747
16839
  var requestTokenFields = [
16748
16840
  "inputTokens",
@@ -23858,6 +23950,8 @@ var OpenCodeHarnessSession = class {
23858
23950
  if (this.#phase !== "open") {
23859
23951
  return { ok: false, error: invalidState("OpenCode Session is not open") };
23860
23952
  }
23953
+ if (command.type === "turn.steer")
23954
+ return unsupportedSteer("OpenCode");
23861
23955
  if (command.type === "turn.cancel")
23862
23956
  return this.#cancel(command);
23863
23957
  if (command.type === "interaction.respond")
@@ -27538,6 +27632,8 @@ var V2Session = class {
27538
27632
  async execute(command) {
27539
27633
  if (this.#closed)
27540
27634
  return { ok: false, error: failure("OpenCode Session is closed", "invalidState") };
27635
+ if (command.type === "turn.steer")
27636
+ return unsupportedSteer("OpenCode");
27541
27637
  if (command.type === "turn.start")
27542
27638
  return this.#start(command, false);
27543
27639
  if (command.type === "turn.cancel") {