@codexhost/cli-win32-arm64 0.13.3 → 0.14.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 +58 -5
  4. package/app/console-web.js +437 -68
  5. package/app/desktop-controller.mjs +72 -9
  6. package/app/host-runtime.mjs +766 -214
  7. package/app/plugins/antigravity/plugin.mjs +91 -13
  8. package/app/plugins/claude-code/plugin.mjs +407 -26
  9. package/app/plugins/codebuddy/plugin.mjs +117 -22
  10. package/app/plugins/codex-usage/plugin.mjs +176 -74
  11. package/app/plugins/copilot/assets/icon.png +0 -0
  12. package/app/plugins/copilot/manifest.json +26 -0
  13. package/app/plugins/copilot/plugin.mjs +34546 -0
  14. package/app/plugins/cursor-cli/plugin.mjs +20701 -44819
  15. package/app/plugins/deepseek-harness/plugin.mjs +83 -11
  16. package/app/plugins/enabled.json +1 -0
  17. package/app/plugins/grok/plugin.mjs +214 -24
  18. package/app/plugins/hermes/plugin.mjs +80 -9
  19. package/app/plugins/kimi-code/plugin.mjs +76 -7
  20. package/app/plugins/kiro-cli/plugin.mjs +76 -7
  21. package/app/plugins/omp/plugin.mjs +2155 -2000
  22. package/app/plugins/opencode/plugin.mjs +85 -11
  23. package/app/plugins/pi/plugin.mjs +2547 -2300
  24. package/app/plugins/qoder/plugin.mjs +83 -11
  25. package/app/plugins/qoder-cn/plugin.mjs +83 -11
  26. package/app/plugins/workbuddy/plugin.mjs +378 -46
  27. package/app/plugins/zcode/plugin.mjs +84 -11
  28. package/app/renderer-extension.js +834 -163
  29. package/bin/codexhost.exe +0 -0
  30. package/libexec/codexhost-node-repl.exe +0 -0
  31. package/libexec/codexhost-shim.exe +0 -0
  32. package/libexec/codexhost-updater.exe +0 -0
  33. 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),
@@ -15207,6 +15216,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15207
15216
  "codexhost/harness/display-settings/set",
15208
15217
  "codexhost/harness/inspect",
15209
15218
  "codexhost/harness/installation",
15219
+ "codexhost/harness/installation/start",
15220
+ "codexhost/harness/installation/status",
15210
15221
  "codexhost/harness/launch-settings/get",
15211
15222
  "codexhost/harness/launch-settings/set",
15212
15223
  "codexhost/harness/web-ui/open",
@@ -15282,7 +15293,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15282
15293
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15283
15294
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15284
15295
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15296
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15297
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15298
+ kind: external_exports.literal("countdown"),
15299
+ id: external_exports.string().min(1).max(64),
15300
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15301
+ label: indicatorTextSchema(256).optional(),
15302
+ tooltip: indicatorTextSchema(1024).optional()
15303
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15304
+ message: "Composer indicator IDs must be unique"
15305
+ });
15285
15306
  var threadUsageSnapshotSchema = external_exports.object({
15307
+ composerIndicators: composerIndicatorsSchema.optional(),
15286
15308
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15287
15309
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15288
15310
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15690,7 +15712,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15690
15712
  }).strict().optional(),
15691
15713
  autonomousTurns: external_exports.object({
15692
15714
  observe: external_exports.boolean()
15693
- }).strict().optional()
15715
+ }).strict().optional(),
15716
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15717
+ steer: external_exports.boolean().optional()
15694
15718
  }).strict();
15695
15719
  var harnessConfigurationStateSchema = external_exports.object({
15696
15720
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15737,7 +15761,9 @@ var harnessInspectionSchema = external_exports.union([
15737
15761
  var harnessInspectParamsSchema = external_exports.object({
15738
15762
  harnessId: harnessIdSchema,
15739
15763
  cwd: nonBlankTextSchema2.max(16384).optional(),
15740
- refresh: external_exports.boolean().optional()
15764
+ refresh: external_exports.boolean().optional(),
15765
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15766
+ purpose: external_exports.literal("availability").optional()
15741
15767
  }).strict();
15742
15768
  var harnessWebUiOpenParamsSchema = external_exports.object({
15743
15769
  harnessId: harnessIdSchema
@@ -15820,6 +15846,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15820
15846
  seen.add(thread.threadId);
15821
15847
  }
15822
15848
  });
15849
+ var threadSteeringInspectParamsSchema = external_exports.object({
15850
+ threadId: hostThreadIdSchema,
15851
+ /** The text about to be steered; a Harness command always stops and restarts. */
15852
+ text: external_exports.string().optional()
15853
+ }).strict();
15854
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15855
+ var threadSteeringInspectResultSchema = external_exports.object({
15856
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15857
+ }).strict();
15823
15858
 
15824
15859
  // ../../shared-contracts/dist/harness-plugins.js
15825
15860
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15921,6 +15956,10 @@ var harnessInstallationStateSchema = external_exports.object({
15921
15956
  latestVersion: external_exports.string().min(1).max(128),
15922
15957
  updateAvailable: external_exports.boolean(),
15923
15958
  canUpdate: external_exports.boolean(),
15959
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15960
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15961
+ /** Official download opened by the user; does not imply an automatic installation. */
15962
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15924
15963
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15925
15964
  message: external_exports.string().max(2048).optional(),
15926
15965
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15928,6 +15967,20 @@ var harnessInstallationStateSchema = external_exports.object({
15928
15967
  notice: harnessLocalizedTextSchema.optional(),
15929
15968
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15930
15969
  }).strict();
15970
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15971
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15972
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15973
+ external_exports.object({
15974
+ taskId: external_exports.string().uuid(),
15975
+ status: external_exports.literal("succeeded"),
15976
+ result: harnessInstallationStateSchema
15977
+ }).strict(),
15978
+ external_exports.object({
15979
+ taskId: external_exports.string().uuid(),
15980
+ status: external_exports.literal("failed"),
15981
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15982
+ }).strict()
15983
+ ]);
15931
15984
 
15932
15985
  // ../../shared-contracts/dist/codex-accounts.js
15933
15986
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16405,6 +16458,18 @@ function sanitizeDiagnosticTail(value) {
16405
16458
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16406
16459
  }
16407
16460
 
16461
+ // ../../harness-adapter/dist/steer.js
16462
+ function unsupportedSteer(harnessLabel) {
16463
+ return {
16464
+ ok: false,
16465
+ error: {
16466
+ code: "unsupported",
16467
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16468
+ retryable: false
16469
+ }
16470
+ };
16471
+ }
16472
+
16408
16473
  // ../../harness-adapter/dist/usage.js
16409
16474
  var tokenFields = [
16410
16475
  "inputTokens",
@@ -16432,6 +16497,7 @@ var usageFields = /* @__PURE__ */ new Set([
16432
16497
  ...safeIntegerFields,
16433
16498
  ...percentFields,
16434
16499
  "sessionCacheUsage",
16500
+ "composerIndicators",
16435
16501
  "totalCostUsd",
16436
16502
  "totalCredits",
16437
16503
  "contextUsagePercent",
@@ -19042,6 +19108,8 @@ var AntigravitySession = class {
19042
19108
  #closed = false;
19043
19109
  #model;
19044
19110
  #nativeRef;
19111
+ /** The last result's `response`: agy carries earlier Turns' replies in it. */
19112
+ #lastResultResponse = "";
19045
19113
  #permissionMode;
19046
19114
  #thinkingOptionId;
19047
19115
  #catalog;
@@ -19103,6 +19171,8 @@ var AntigravitySession = class {
19103
19171
  return { ok: false, error: invalidState("Antigravity Session is closed") };
19104
19172
  if (command.type === "turn.cancel")
19105
19173
  return this.#cancel(command);
19174
+ if (command.type === "turn.steer")
19175
+ return unsupportedSteer("Antigravity");
19106
19176
  if (command.type === "model.select")
19107
19177
  return this.#selectModel(command);
19108
19178
  if (command.type === "permissionMode.select")
@@ -19429,9 +19499,13 @@ ${line}`).slice(-8e3);
19429
19499
  this.#history.bindNativeSession(convId);
19430
19500
  this.#event({ type: "session.state.changed", state: this.#state() });
19431
19501
  }
19432
- if (event.result.response) {
19433
- this.#appendOrSyncAgentText(active, event.result.response, false);
19434
- }
19502
+ const response = event.result.response ?? "";
19503
+ const turnReply = response.startsWith(this.#lastResultResponse) ? response.slice(this.#lastResultResponse.length) : response;
19504
+ const repliedThisTurn = Boolean(active.agentItem) || turnReply.trim() !== "";
19505
+ if (response)
19506
+ this.#lastResultResponse = response;
19507
+ if (turnReply.trim() !== "")
19508
+ this.#appendOrSyncAgentText(active, turnReply, false);
19435
19509
  const safeTurnId = event.result.num_turns !== void 0 && event.result.num_turns !== null ? `turn:${event.result.num_turns}` : `turn:${this.#history.snapshot().length + 1}`;
19436
19510
  const safeSessionId = convId || this.#nativeRef?.nativeSessionId || "unknown-session";
19437
19511
  const nativeTurnRef = nativeTurnRefSchema.parse({
@@ -19461,13 +19535,17 @@ ${line}`).slice(-8e3);
19461
19535
  } else {
19462
19536
  const nativeError = event.result.error?.trim();
19463
19537
  const errorDetail = nativeError || active.stderr;
19464
- this.#completeTurn(active, {
19465
- status: "failed",
19466
- error: normalizedProcessError(errorDetail, `Antigravity Turn ended with status ${event.result.status}`, nativeError !== void 0),
19467
- checkpoint
19468
- }, nativeTurnRef);
19538
+ const error51 = normalizedProcessError(errorDetail, `Antigravity Turn ended with status ${event.result.status}`, nativeError !== void 0);
19539
+ if (repliedThisTurn && nativeError && this.#reportedEarlier(error51)) {
19540
+ this.#completeTurn(active, { status: "succeeded", checkpoint }, nativeTurnRef);
19541
+ } else {
19542
+ this.#completeTurn(active, { status: "failed", error: error51, checkpoint }, nativeTurnRef);
19543
+ }
19469
19544
  }
19470
19545
  }
19546
+ #reportedEarlier(error51) {
19547
+ return this.#history.snapshot().some(({ outcome }) => outcome.status === "failed" && outcome.error.code === error51.code && outcome.error.message === error51.message);
19548
+ }
19471
19549
  #publishUsage(active, usage) {
19472
19550
  active.latestUsage = { ...active.latestUsage ?? {}, ...usage };
19473
19551
  this.#event({