@karlorz/codexhost-cli-win32-x64 0.13.3-7 → 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 +55 -4
  4. package/app/console-web.js +344 -54
  5. package/app/cpa-live-voice-hook.js +55 -4
  6. package/app/desktop-controller.mjs +69 -8
  7. package/app/host-runtime.mjs +743 -230
  8. package/app/plugins/antigravity/plugin.mjs +88 -12
  9. package/app/plugins/claude-code/plugin.mjs +397 -21
  10. package/app/plugins/codebuddy/plugin.mjs +107 -17
  11. package/app/plugins/codex-usage/plugin.mjs +67 -7
  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 +88 -6
  16. package/app/plugins/deepseek-harness/plugin.mjs +73 -6
  17. package/app/plugins/enabled.json +1 -0
  18. package/app/plugins/grok/plugin.mjs +272 -60
  19. package/app/plugins/hermes/plugin.mjs +70 -4
  20. package/app/plugins/kimi-code/plugin.mjs +73 -6
  21. package/app/plugins/kiro-cli/plugin.mjs +73 -6
  22. package/app/plugins/omp/plugin.mjs +73 -112
  23. package/app/plugins/opencode/plugin.mjs +75 -6
  24. package/app/plugins/pi/plugin.mjs +204 -44
  25. package/app/plugins/qoder/plugin.mjs +73 -6
  26. package/app/plugins/qoder-cn/plugin.mjs +73 -6
  27. package/app/plugins/workbuddy/plugin.mjs +368 -41
  28. package/app/plugins/zcode/plugin.mjs +74 -6
  29. package/app/renderer-extension.js +749 -157
  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
@@ -15068,10 +15068,19 @@ var model = external_exports.string().min(1).max(512);
15068
15068
  var project = external_exports.string().min(1).max(4096);
15069
15069
  var usageStatisticsParamsSchema = external_exports.strictObject({
15070
15070
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15071
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
15072
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
15073
+ try {
15074
+ new Intl.DateTimeFormat("en", { timeZone: value });
15075
+ return true;
15076
+ } catch {
15077
+ return false;
15078
+ }
15079
+ }, "Unsupported usage statistics timezone").optional(),
15071
15080
  harness: harness.optional(),
15072
15081
  model: model.nullable().optional(),
15073
15082
  project: project.nullable().optional(),
15074
- /** One local date inside the range. */
15083
+ /** One date in the query timezone inside the range. */
15075
15084
  date: localDate.optional()
15076
15085
  });
15077
15086
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -15107,7 +15116,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
15107
15116
  });
15108
15117
  var usageStatisticsResultSchema = external_exports.strictObject({
15109
15118
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15110
- /** First local date of the range; null for all time. */
15119
+ /** First date in the query timezone (Host local when omitted); null for all time. */
15111
15120
  from: localDate.nullable(),
15112
15121
  to: localDate,
15113
15122
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15147,7 +15156,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15147
15156
  totals: usageStatisticsTotalsSchema,
15148
15157
  /** Each date and Harness of the range: every filter except the day. */
15149
15158
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15150
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15159
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15151
15160
  hourly: external_exports.array(external_exports.strictObject({
15152
15161
  weekday: external_exports.number().int().min(0).max(6),
15153
15162
  hour: external_exports.number().int().min(0).max(23),
@@ -15238,6 +15247,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15238
15247
  "codexhost/harness/display-settings/set",
15239
15248
  "codexhost/harness/inspect",
15240
15249
  "codexhost/harness/installation",
15250
+ "codexhost/harness/installation/start",
15251
+ "codexhost/harness/installation/status",
15241
15252
  "codexhost/harness/launch-settings/get",
15242
15253
  "codexhost/harness/launch-settings/set",
15243
15254
  "codexhost/harness/grok-computer-use/get",
@@ -15315,7 +15326,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15315
15326
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15316
15327
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15317
15328
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15329
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15330
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15331
+ kind: external_exports.literal("countdown"),
15332
+ id: external_exports.string().min(1).max(64),
15333
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15334
+ label: indicatorTextSchema(256).optional(),
15335
+ tooltip: indicatorTextSchema(1024).optional()
15336
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15337
+ message: "Composer indicator IDs must be unique"
15338
+ });
15318
15339
  var threadUsageSnapshotSchema = external_exports.object({
15340
+ composerIndicators: composerIndicatorsSchema.optional(),
15319
15341
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15320
15342
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15321
15343
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15723,7 +15745,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15723
15745
  }).strict().optional(),
15724
15746
  autonomousTurns: external_exports.object({
15725
15747
  observe: external_exports.boolean()
15726
- }).strict().optional()
15748
+ }).strict().optional(),
15749
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15750
+ steer: external_exports.boolean().optional()
15727
15751
  }).strict();
15728
15752
  var harnessConfigurationStateSchema = external_exports.object({
15729
15753
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15855,6 +15879,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15855
15879
  seen.add(thread.threadId);
15856
15880
  }
15857
15881
  });
15882
+ var threadSteeringInspectParamsSchema = external_exports.object({
15883
+ threadId: hostThreadIdSchema,
15884
+ /** The text about to be steered; a Harness command always stops and restarts. */
15885
+ text: external_exports.string().optional()
15886
+ }).strict();
15887
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15888
+ var threadSteeringInspectResultSchema = external_exports.object({
15889
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15890
+ }).strict();
15858
15891
 
15859
15892
  // ../../shared-contracts/dist/harness-plugins.js
15860
15893
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15976,6 +16009,10 @@ var harnessInstallationStateSchema = external_exports.object({
15976
16009
  latestVersion: external_exports.string().min(1).max(128),
15977
16010
  updateAvailable: external_exports.boolean(),
15978
16011
  canUpdate: external_exports.boolean(),
16012
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
16013
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
16014
+ /** Official download opened by the user; does not imply an automatic installation. */
16015
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15979
16016
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15980
16017
  message: external_exports.string().max(2048).optional(),
15981
16018
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15983,6 +16020,20 @@ var harnessInstallationStateSchema = external_exports.object({
15983
16020
  notice: harnessLocalizedTextSchema.optional(),
15984
16021
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15985
16022
  }).strict();
16023
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
16024
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
16025
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
16026
+ external_exports.object({
16027
+ taskId: external_exports.string().uuid(),
16028
+ status: external_exports.literal("succeeded"),
16029
+ result: harnessInstallationStateSchema
16030
+ }).strict(),
16031
+ external_exports.object({
16032
+ taskId: external_exports.string().uuid(),
16033
+ status: external_exports.literal("failed"),
16034
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
16035
+ }).strict()
16036
+ ]);
15986
16037
 
15987
16038
  // ../../shared-contracts/dist/codex-accounts.js
15988
16039
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16506,6 +16557,18 @@ function sanitizeDiagnosticTail(value) {
16506
16557
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16507
16558
  }
16508
16559
 
16560
+ // ../../harness-adapter/dist/steer.js
16561
+ function unsupportedSteer(harnessLabel) {
16562
+ return {
16563
+ ok: false,
16564
+ error: {
16565
+ code: "unsupported",
16566
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16567
+ retryable: false
16568
+ }
16569
+ };
16570
+ }
16571
+
16509
16572
  // ../../harness-adapter/dist/usage.js
16510
16573
  var tokenFields = [
16511
16574
  "inputTokens",
@@ -16533,6 +16596,7 @@ var usageFields = /* @__PURE__ */ new Set([
16533
16596
  ...safeIntegerFields,
16534
16597
  ...percentFields,
16535
16598
  "sessionCacheUsage",
16599
+ "composerIndicators",
16536
16600
  "totalCostUsd",
16537
16601
  "totalCredits",
16538
16602
  "contextUsagePercent",
@@ -19143,6 +19207,8 @@ var AntigravitySession = class {
19143
19207
  #closed = false;
19144
19208
  #model;
19145
19209
  #nativeRef;
19210
+ /** The last result's `response`: agy carries earlier Turns' replies in it. */
19211
+ #lastResultResponse = "";
19146
19212
  #permissionMode;
19147
19213
  #thinkingOptionId;
19148
19214
  #catalog;
@@ -19204,6 +19270,8 @@ var AntigravitySession = class {
19204
19270
  return { ok: false, error: invalidState("Antigravity Session is closed") };
19205
19271
  if (command.type === "turn.cancel")
19206
19272
  return this.#cancel(command);
19273
+ if (command.type === "turn.steer")
19274
+ return unsupportedSteer("Antigravity");
19207
19275
  if (command.type === "model.select")
19208
19276
  return this.#selectModel(command);
19209
19277
  if (command.type === "permissionMode.select")
@@ -19530,9 +19598,13 @@ ${line}`).slice(-8e3);
19530
19598
  this.#history.bindNativeSession(convId);
19531
19599
  this.#event({ type: "session.state.changed", state: this.#state() });
19532
19600
  }
19533
- if (event.result.response) {
19534
- this.#appendOrSyncAgentText(active, event.result.response, false);
19535
- }
19601
+ const response = event.result.response ?? "";
19602
+ const turnReply = response.startsWith(this.#lastResultResponse) ? response.slice(this.#lastResultResponse.length) : response;
19603
+ const repliedThisTurn = Boolean(active.agentItem) || turnReply.trim() !== "";
19604
+ if (response)
19605
+ this.#lastResultResponse = response;
19606
+ if (turnReply.trim() !== "")
19607
+ this.#appendOrSyncAgentText(active, turnReply, false);
19536
19608
  const safeTurnId = event.result.num_turns !== void 0 && event.result.num_turns !== null ? `turn:${event.result.num_turns}` : `turn:${this.#history.snapshot().length + 1}`;
19537
19609
  const safeSessionId = convId || this.#nativeRef?.nativeSessionId || "unknown-session";
19538
19610
  const nativeTurnRef = nativeTurnRefSchema.parse({
@@ -19562,13 +19634,17 @@ ${line}`).slice(-8e3);
19562
19634
  } else {
19563
19635
  const nativeError = event.result.error?.trim();
19564
19636
  const errorDetail = nativeError || active.stderr;
19565
- this.#completeTurn(active, {
19566
- status: "failed",
19567
- error: normalizedProcessError(errorDetail, `Antigravity Turn ended with status ${event.result.status}`, nativeError !== void 0),
19568
- checkpoint
19569
- }, nativeTurnRef);
19637
+ const error51 = normalizedProcessError(errorDetail, `Antigravity Turn ended with status ${event.result.status}`, nativeError !== void 0);
19638
+ if (repliedThisTurn && nativeError && this.#reportedEarlier(error51)) {
19639
+ this.#completeTurn(active, { status: "succeeded", checkpoint }, nativeTurnRef);
19640
+ } else {
19641
+ this.#completeTurn(active, { status: "failed", error: error51, checkpoint }, nativeTurnRef);
19642
+ }
19570
19643
  }
19571
19644
  }
19645
+ #reportedEarlier(error51) {
19646
+ return this.#history.snapshot().some(({ outcome }) => outcome.status === "failed" && outcome.error.code === error51.code && outcome.error.message === error51.message);
19647
+ }
19572
19648
  #publishUsage(active, usage) {
19573
19649
  active.latestUsage = { ...active.latestUsage ?? {}, ...usage };
19574
19650
  this.#event({