@karlorz/codexhost-cli-win32-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 (34) 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.exe +0 -0
  31. package/libexec/codexhost-node-repl.exe +0 -0
  32. package/libexec/codexhost-shim.exe +0 -0
  33. package/libexec/codexhost-updater.exe +0 -0
  34. package/package.json +1 -1
@@ -22,10 +22,13 @@ function usageSessionTitle(value) {
22
22
  return void 0;
23
23
  if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
24
24
  return normalized;
25
- const characters = [...normalized];
26
- if (characters.length <= MAX_SESSION_TITLE_LENGTH)
27
- return normalized;
28
- return `${characters.slice(0, MAX_SESSION_TITLE_LENGTH - 1).join("").trimEnd()}…`;
25
+ let title = "";
26
+ for (const character of normalized) {
27
+ if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
28
+ break;
29
+ title += character;
30
+ }
31
+ return `${title.trimEnd()}…`;
29
32
  }
30
33
  function sessionIdOk(value) {
31
34
  return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
@@ -14845,10 +14848,19 @@ var model = external_exports.string().min(1).max(512);
14845
14848
  var project = external_exports.string().min(1).max(4096);
14846
14849
  var usageStatisticsParamsSchema = external_exports.strictObject({
14847
14850
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14851
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
14852
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
14853
+ try {
14854
+ new Intl.DateTimeFormat("en", { timeZone: value });
14855
+ return true;
14856
+ } catch {
14857
+ return false;
14858
+ }
14859
+ }, "Unsupported usage statistics timezone").optional(),
14848
14860
  harness: harness.optional(),
14849
14861
  model: model.nullable().optional(),
14850
14862
  project: project.nullable().optional(),
14851
- /** One local date inside the range. */
14863
+ /** One date in the query timezone inside the range. */
14852
14864
  date: localDate.optional()
14853
14865
  });
14854
14866
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -14884,7 +14896,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
14884
14896
  });
14885
14897
  var usageStatisticsResultSchema = external_exports.strictObject({
14886
14898
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14887
- /** First local date of the range; null for all time. */
14899
+ /** First date in the query timezone (Host local when omitted); null for all time. */
14888
14900
  from: localDate.nullable(),
14889
14901
  to: localDate,
14890
14902
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -14924,7 +14936,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
14924
14936
  totals: usageStatisticsTotalsSchema,
14925
14937
  /** Each date and Harness of the range: every filter except the day. */
14926
14938
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
14927
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
14939
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
14928
14940
  hourly: external_exports.array(external_exports.strictObject({
14929
14941
  weekday: external_exports.number().int().min(0).max(6),
14930
14942
  hour: external_exports.number().int().min(0).max(23),
@@ -15015,8 +15027,12 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15015
15027
  "codexhost/harness/display-settings/set",
15016
15028
  "codexhost/harness/inspect",
15017
15029
  "codexhost/harness/installation",
15030
+ "codexhost/harness/installation/start",
15031
+ "codexhost/harness/installation/status",
15018
15032
  "codexhost/harness/launch-settings/get",
15019
15033
  "codexhost/harness/launch-settings/set",
15034
+ "codexhost/harness/grok-computer-use/get",
15035
+ "codexhost/harness/grok-computer-use/set",
15020
15036
  "codexhost/harness/web-ui/open",
15021
15037
  "codexhost/harness/accounts/sources",
15022
15038
  "codexhost/harness/accounts/list",
@@ -15090,7 +15106,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15090
15106
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15091
15107
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15092
15108
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15109
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text2) => text2.length <= maximum));
15110
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15111
+ kind: external_exports.literal("countdown"),
15112
+ id: external_exports.string().min(1).max(64),
15113
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15114
+ label: indicatorTextSchema(256).optional(),
15115
+ tooltip: indicatorTextSchema(1024).optional()
15116
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15117
+ message: "Composer indicator IDs must be unique"
15118
+ });
15093
15119
  var threadUsageSnapshotSchema = external_exports.object({
15120
+ composerIndicators: composerIndicatorsSchema.optional(),
15094
15121
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15095
15122
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15096
15123
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15498,7 +15525,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15498
15525
  }).strict().optional(),
15499
15526
  autonomousTurns: external_exports.object({
15500
15527
  observe: external_exports.boolean()
15501
- }).strict().optional()
15528
+ }).strict().optional(),
15529
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15530
+ steer: external_exports.boolean().optional()
15502
15531
  }).strict();
15503
15532
  var harnessConfigurationStateSchema = external_exports.object({
15504
15533
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15545,7 +15574,9 @@ var harnessInspectionSchema = external_exports.union([
15545
15574
  var harnessInspectParamsSchema = external_exports.object({
15546
15575
  harnessId: harnessIdSchema,
15547
15576
  cwd: nonBlankTextSchema2.max(16384).optional(),
15548
- refresh: external_exports.boolean().optional()
15577
+ refresh: external_exports.boolean().optional(),
15578
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15579
+ purpose: external_exports.literal("availability").optional()
15549
15580
  }).strict();
15550
15581
  var harnessWebUiOpenParamsSchema = external_exports.object({
15551
15582
  harnessId: harnessIdSchema
@@ -15628,6 +15659,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15628
15659
  seen.add(thread.threadId);
15629
15660
  }
15630
15661
  });
15662
+ var threadSteeringInspectParamsSchema = external_exports.object({
15663
+ threadId: hostThreadIdSchema,
15664
+ /** The text about to be steered; a Harness command always stops and restarts. */
15665
+ text: external_exports.string().optional()
15666
+ }).strict();
15667
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15668
+ var threadSteeringInspectResultSchema = external_exports.object({
15669
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15670
+ }).strict();
15631
15671
 
15632
15672
  // ../../shared-contracts/dist/harness-plugins.js
15633
15673
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15719,6 +15759,26 @@ var harnessLaunchSettingsSchema = external_exports.object({
15719
15759
  restartRequired: external_exports.boolean()
15720
15760
  }).strict();
15721
15761
 
15762
+ // ../../shared-contracts/dist/grok-computer-use.js
15763
+ var grokComputerUseGetSchema = external_exports.object({}).strict();
15764
+ var grokComputerUseSetSchema = external_exports.object({
15765
+ enabled: external_exports.boolean().optional(),
15766
+ browser: external_exports.boolean().optional()
15767
+ }).strict().refine((value) => value.enabled !== void 0 || value.browser !== void 0, {
15768
+ message: "Expected enabled or browser"
15769
+ });
15770
+ var grokComputerUseSettingsSchema = external_exports.object({
15771
+ enabled: external_exports.boolean(),
15772
+ available: external_exports.boolean(),
15773
+ unavailableReason: external_exports.string().min(1).max(500).optional(),
15774
+ browser: external_exports.boolean().optional(),
15775
+ browserFilesPresent: external_exports.boolean().optional(),
15776
+ browserAvailable: external_exports.boolean().optional(),
15777
+ browserUnavailableReason: external_exports.string().min(1).max(500).optional(),
15778
+ applyFailed: external_exports.boolean().optional(),
15779
+ applyError: external_exports.string().min(1).max(500).optional()
15780
+ }).strict();
15781
+
15722
15782
  // ../../shared-contracts/dist/harness-installation.js
15723
15783
  var harnessInstallationParamsSchema = external_exports.object({
15724
15784
  harnessId: harnessIdSchema,
@@ -15729,6 +15789,10 @@ var harnessInstallationStateSchema = external_exports.object({
15729
15789
  latestVersion: external_exports.string().min(1).max(128),
15730
15790
  updateAvailable: external_exports.boolean(),
15731
15791
  canUpdate: external_exports.boolean(),
15792
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15793
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15794
+ /** Official download opened by the user; does not imply an automatic installation. */
15795
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15732
15796
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15733
15797
  message: external_exports.string().max(2048).optional(),
15734
15798
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15736,6 +15800,20 @@ var harnessInstallationStateSchema = external_exports.object({
15736
15800
  notice: harnessLocalizedTextSchema.optional(),
15737
15801
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15738
15802
  }).strict();
15803
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15804
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15805
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15806
+ external_exports.object({
15807
+ taskId: external_exports.string().uuid(),
15808
+ status: external_exports.literal("succeeded"),
15809
+ result: harnessInstallationStateSchema
15810
+ }).strict(),
15811
+ external_exports.object({
15812
+ taskId: external_exports.string().uuid(),
15813
+ status: external_exports.literal("failed"),
15814
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15815
+ }).strict()
15816
+ ]);
15739
15817
 
15740
15818
  // ../../shared-contracts/dist/codex-accounts.js
15741
15819
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16267,6 +16345,18 @@ function sanitizeDiagnosticTail(value) {
16267
16345
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16268
16346
  }
16269
16347
 
16348
+ // ../../harness-adapter/dist/steer.js
16349
+ function unsupportedSteer(harnessLabel) {
16350
+ return {
16351
+ ok: false,
16352
+ error: {
16353
+ code: "unsupported",
16354
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16355
+ retryable: false
16356
+ }
16357
+ };
16358
+ }
16359
+
16270
16360
  // ../../harness-adapter/dist/usage.js
16271
16361
  var tokenFields = [
16272
16362
  "inputTokens",
@@ -16294,6 +16384,7 @@ var usageFields = /* @__PURE__ */ new Set([
16294
16384
  ...safeIntegerFields,
16295
16385
  ...percentFields,
16296
16386
  "sessionCacheUsage",
16387
+ "composerIndicators",
16297
16388
  "totalCostUsd",
16298
16389
  "totalCredits",
16299
16390
  "contextUsagePercent",
@@ -16316,6 +16407,7 @@ function parseHostUsage(value) {
16316
16407
  throw new Error(`Harness Usage contains unknown field '${key}'`);
16317
16408
  }
16318
16409
  }
16410
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
16319
16411
  for (const field2 of [
16320
16412
  "totalCredits",
16321
16413
  "contextUsagePercent",
@@ -16386,9 +16478,9 @@ function parseHostUsage(value) {
16386
16478
  if (value.costSource !== "publicPrice") {
16387
16479
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
16388
16480
  }
16389
- return { ...value, unpricedModels: [...models] };
16481
+ return { ...value, ...indicators, unpricedModels: [...models] };
16390
16482
  }
16391
- return { ...value };
16483
+ return { ...value, ...indicators };
16392
16484
  }
16393
16485
  var requestTokenFields = [
16394
16486
  "inputTokens",
@@ -19496,6 +19588,7 @@ async function readHistory(transport, snapshot, events = []) {
19496
19588
 
19497
19589
  // dist/capabilities.js
19498
19590
  var ZCODE_CAPABILITIES = {
19591
+ steer: false,
19499
19592
  configuration: {
19500
19593
  selectModel: true,
19501
19594
  selectThinkingOption: true,
@@ -19670,6 +19763,8 @@ var ZcodeSession = class {
19670
19763
  if (this.#closed || this.#faulted)
19671
19764
  return failure("invalidState", "ZCode session is closed");
19672
19765
  try {
19766
+ if (command.type === "turn.steer")
19767
+ return unsupportedSteer("ZCode");
19673
19768
  if (command.type === "turn.start") {
19674
19769
  if (!hostTurnIdSchema.safeParse(command.turnId).success || !command.input.length || command.input.some((item) => item.type !== "text") || !command.input.some((item) => item.text.trim()))
19675
19770
  return failure("invalidRequest", "ZCode requires nonempty text and a turn ID");