@codexhost/cli-darwin-x64 0.13.2 → 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 +94 -8
  4. package/app/console-web.js +537 -146
  5. package/app/desktop-controller.mjs +108 -12
  6. package/app/host-runtime.mjs +847 -235
  7. package/app/plugins/antigravity/plugin.mjs +143 -20
  8. package/app/plugins/claude-code/plugin.mjs +601 -71
  9. package/app/plugins/codebuddy/plugin.mjs +227 -30
  10. package/app/plugins/codex-usage/plugin.mjs +212 -77
  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 +20805 -44862
  15. package/app/plugins/deepseek-harness/manifest.json +2 -2
  16. package/app/plugins/deepseek-harness/plugin.mjs +202 -21
  17. package/app/plugins/enabled.json +1 -0
  18. package/app/plugins/grok/plugin.mjs +278 -29
  19. package/app/plugins/hermes/plugin.mjs +143 -12
  20. package/app/plugins/kimi-code/plugin.mjs +140 -16
  21. package/app/plugins/kiro-cli/plugin.mjs +121 -10
  22. package/app/plugins/omp/plugin.mjs +2200 -2002
  23. package/app/plugins/opencode/plugin.mjs +137 -16
  24. package/app/plugins/pi/plugin.mjs +2563 -2282
  25. package/app/plugins/qoder/plugin.mjs +133 -14
  26. package/app/plugins/qoder-cn/plugin.mjs +133 -14
  27. package/app/plugins/workbuddy/plugin.mjs +603 -56
  28. package/app/plugins/zcode/plugin.mjs +133 -14
  29. package/app/renderer-extension.js +1171 -529
  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
@@ -14873,6 +14873,15 @@ var harnessDisplaySetSchema = external_exports.strictObject({
14873
14873
  initializeOnly: external_exports.boolean().optional()
14874
14874
  });
14875
14875
 
14876
+ // packages/shared-contracts/dist/harness-presentation.js
14877
+ var localeSchema = external_exports.string().max(64).regex(/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/u);
14878
+ var displayText = (maximum) => external_exports.string().min(1).max(maximum).refine((text) => text.trim().length > 0);
14879
+ var harnessLocalizationsSchema = external_exports.record(localeSchema, external_exports.object({
14880
+ label: displayText(256).optional(),
14881
+ description: displayText(1024).optional()
14882
+ }).strict()).refine((entries) => Object.keys(entries).length <= 16, "Too many locales");
14883
+ var harnessLocalizedTextSchema = external_exports.record(localeSchema, displayText(4096)).refine((entries) => typeof entries.en === "string", "English fallback is required").refine((entries) => Object.keys(entries).length <= 16, "Too many locales");
14884
+
14876
14885
  // packages/shared-contracts/dist/model-price-overrides.js
14877
14886
  var usdPerMillionTokens = external_exports.number().finite().nonnegative();
14878
14887
  var modelPriceOverrideSchema = external_exports.strictObject({
@@ -14922,10 +14931,19 @@ var model = external_exports.string().min(1).max(512);
14922
14931
  var project = external_exports.string().min(1).max(4096);
14923
14932
  var usageStatisticsParamsSchema = external_exports.strictObject({
14924
14933
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14934
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
14935
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
14936
+ try {
14937
+ new Intl.DateTimeFormat("en", { timeZone: value });
14938
+ return true;
14939
+ } catch {
14940
+ return false;
14941
+ }
14942
+ }, "Unsupported usage statistics timezone").optional(),
14925
14943
  harness: harness.optional(),
14926
14944
  model: model.nullable().optional(),
14927
14945
  project: project.nullable().optional(),
14928
- /** One local date inside the range. */
14946
+ /** One date in the query timezone inside the range. */
14929
14947
  date: localDate.optional()
14930
14948
  });
14931
14949
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -14961,7 +14979,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
14961
14979
  });
14962
14980
  var usageStatisticsResultSchema = external_exports.strictObject({
14963
14981
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14964
- /** First local date of the range; null for all time. */
14982
+ /** First date in the query timezone (Host local when omitted); null for all time. */
14965
14983
  from: localDate.nullable(),
14966
14984
  to: localDate,
14967
14985
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15001,7 +15019,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15001
15019
  totals: usageStatisticsTotalsSchema,
15002
15020
  /** Each date and Harness of the range: every filter except the day. */
15003
15021
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15004
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15022
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15005
15023
  hourly: external_exports.array(external_exports.strictObject({
15006
15024
  weekday: external_exports.number().int().min(0).max(6),
15007
15025
  hour: external_exports.number().int().min(0).max(23),
@@ -15061,6 +15079,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15061
15079
  "codexhost/harness/display-settings/set",
15062
15080
  "codexhost/harness/inspect",
15063
15081
  "codexhost/harness/installation",
15082
+ "codexhost/harness/installation/start",
15083
+ "codexhost/harness/installation/status",
15064
15084
  "codexhost/harness/launch-settings/get",
15065
15085
  "codexhost/harness/launch-settings/set",
15066
15086
  "codexhost/harness/web-ui/open",
@@ -15136,7 +15156,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15136
15156
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15137
15157
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15138
15158
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15159
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15160
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15161
+ kind: external_exports.literal("countdown"),
15162
+ id: external_exports.string().min(1).max(64),
15163
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15164
+ label: indicatorTextSchema(256).optional(),
15165
+ tooltip: indicatorTextSchema(1024).optional()
15166
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15167
+ message: "Composer indicator IDs must be unique"
15168
+ });
15139
15169
  var threadUsageSnapshotSchema = external_exports.object({
15170
+ composerIndicators: composerIndicatorsSchema.optional(),
15140
15171
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15141
15172
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15142
15173
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15209,8 +15240,24 @@ var threadUsageSnapshotSchema = external_exports.object({
15209
15240
  }
15210
15241
  });
15211
15242
  var usagePercentSchema = external_exports.number().finite().min(0).max(100);
15243
+ var accountCreditsPeriodSchema = external_exports.enum([
15244
+ "weekly",
15245
+ "monthly",
15246
+ "five_hour",
15247
+ "seven_day",
15248
+ "unknown"
15249
+ ]);
15250
+ var accountCreditsScopeSchema = external_exports.object({
15251
+ id: external_exports.string().min(1).max(256),
15252
+ label: external_exports.string().min(1).max(256),
15253
+ localizations: harnessLocalizationsSchema.optional()
15254
+ }).strict();
15212
15255
  var accountCreditsProductUsageSchema = external_exports.object({
15213
15256
  product: external_exports.string().min(1),
15257
+ /** Native period and scope, never inferred from the display name. */
15258
+ periodType: accountCreditsPeriodSchema.optional(),
15259
+ scope: accountCreditsScopeSchema.optional(),
15260
+ localizations: harnessLocalizationsSchema.optional(),
15214
15261
  used: external_exports.number().finite().nonnegative().optional(),
15215
15262
  // Zero is a real empty cap, not an absent field.
15216
15263
  limit: external_exports.number().finite().nonnegative().optional(),
@@ -15230,9 +15277,11 @@ var accountCreditsSnapshotSchema = external_exports.object({
15230
15277
  unit: external_exports.string().min(1).max(32).optional(),
15231
15278
  /** Native label when the primary limit is scoped to a model or product group. */
15232
15279
  label: external_exports.string().min(1).optional(),
15280
+ scope: accountCreditsScopeSchema.optional(),
15281
+ localizations: harnessLocalizationsSchema.optional(),
15233
15282
  usedPercent: usagePercentSchema,
15234
15283
  resetsAt: external_exports.string().min(1).optional(),
15235
- periodType: external_exports.enum(["weekly", "monthly", "five_hour", "seven_day", "unknown"]),
15284
+ periodType: accountCreditsPeriodSchema,
15236
15285
  productUsage: external_exports.array(accountCreditsProductUsageSchema).min(1).optional(),
15237
15286
  resetCredits: accountResetCreditsSchema.optional()
15238
15287
  }).strict();
@@ -15243,7 +15292,9 @@ var threadUsageInspectionParamsSchema = external_exports.object({
15243
15292
  var threadUsageInspectionSchema = external_exports.object({
15244
15293
  threadId: hostThreadIdSchema,
15245
15294
  usage: threadUsageSnapshotSchema.nullable(),
15246
- accountCredits: accountCreditsSnapshotSchema.optional()
15295
+ accountCredits: accountCreditsSnapshotSchema.optional(),
15296
+ /** Whether this source can provide cached account quota independently of usage. */
15297
+ accountCreditsSupported: external_exports.boolean().optional()
15247
15298
  }).strict();
15248
15299
 
15249
15300
  // packages/shared-contracts/dist/harness-accounts.js
@@ -15370,7 +15421,8 @@ var harnessPermissionModeSchema = external_exports.object({
15370
15421
  id: harnessPermissionModeIdSchema,
15371
15422
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
15372
15423
  description: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_DESCRIPTION_MAX_LENGTH).optional(),
15373
- dangerous: external_exports.boolean().optional()
15424
+ dangerous: external_exports.boolean().optional(),
15425
+ localizations: harnessLocalizationsSchema.optional()
15374
15426
  }).strict();
15375
15427
  var harnessPermissionModeCatalogSchema = external_exports.object({
15376
15428
  modes: external_exports.array(harnessPermissionModeSchema).min(1).max(HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH),
@@ -15523,7 +15575,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15523
15575
  }).strict().optional(),
15524
15576
  autonomousTurns: external_exports.object({
15525
15577
  observe: external_exports.boolean()
15526
- }).strict().optional()
15578
+ }).strict().optional(),
15579
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15580
+ steer: external_exports.boolean().optional()
15527
15581
  }).strict();
15528
15582
  var harnessConfigurationStateSchema = external_exports.object({
15529
15583
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15570,7 +15624,9 @@ var harnessInspectionSchema = external_exports.union([
15570
15624
  var harnessInspectParamsSchema = external_exports.object({
15571
15625
  harnessId: harnessIdSchema,
15572
15626
  cwd: nonBlankTextSchema2.max(16384).optional(),
15573
- refresh: external_exports.boolean().optional()
15627
+ refresh: external_exports.boolean().optional(),
15628
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15629
+ purpose: external_exports.literal("availability").optional()
15574
15630
  }).strict();
15575
15631
  var harnessWebUiOpenParamsSchema = external_exports.object({
15576
15632
  harnessId: harnessIdSchema
@@ -15653,6 +15709,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15653
15709
  seen.add(thread.threadId);
15654
15710
  }
15655
15711
  });
15712
+ var threadSteeringInspectParamsSchema = external_exports.object({
15713
+ threadId: hostThreadIdSchema,
15714
+ /** The text about to be steered; a Harness command always stops and restarts. */
15715
+ text: external_exports.string().optional()
15716
+ }).strict();
15717
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15718
+ var threadSteeringInspectResultSchema = external_exports.object({
15719
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15720
+ }).strict();
15656
15721
 
15657
15722
  // packages/shared-contracts/dist/harness-plugins.js
15658
15723
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15754,11 +15819,31 @@ var harnessInstallationStateSchema = external_exports.object({
15754
15819
  latestVersion: external_exports.string().min(1).max(128),
15755
15820
  updateAvailable: external_exports.boolean(),
15756
15821
  canUpdate: external_exports.boolean(),
15822
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15823
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15824
+ /** Official download opened by the user; does not imply an automatic installation. */
15825
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15757
15826
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15758
15827
  message: external_exports.string().max(2048).optional(),
15759
15828
  messageCode: external_exports.string().min(1).max(128).optional(),
15829
+ /** Safe plugin-owned explanation, distinct from raw diagnostic message. */
15830
+ notice: harnessLocalizedTextSchema.optional(),
15760
15831
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15761
15832
  }).strict();
15833
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15834
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15835
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15836
+ external_exports.object({
15837
+ taskId: external_exports.string().uuid(),
15838
+ status: external_exports.literal("succeeded"),
15839
+ result: harnessInstallationStateSchema
15840
+ }).strict(),
15841
+ external_exports.object({
15842
+ taskId: external_exports.string().uuid(),
15843
+ status: external_exports.literal("failed"),
15844
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15845
+ }).strict()
15846
+ ]);
15762
15847
 
15763
15848
  // packages/shared-contracts/dist/codex-accounts.js
15764
15849
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -15883,6 +15968,7 @@ var harnessCommandDescriptorSchema = external_exports.object({
15883
15968
  invocation: commandInvocationSchema,
15884
15969
  label: commandLabelSchema,
15885
15970
  description: commandDescriptionSchema.optional(),
15971
+ localizations: harnessLocalizationsSchema.optional(),
15886
15972
  argumentMode: external_exports.enum(["none", "text"]),
15887
15973
  /**
15888
15974
  * Native distinction reported by the Harness. Omitted when the Harness does
@@ -17154,9 +17240,13 @@ function requestManagerFromHookState(value, hostId2) {
17154
17240
  if (!record2(value)) return null;
17155
17241
  const direct = manager(value) ?? manager(value.manager);
17156
17242
  if (direct) return direct;
17157
- if (!hostId2 || typeof value.addManager !== "function" || typeof value.getForHostId !== "function" || typeof value.waitForManagerForHostId !== "function")
17243
+ if (!hostId2 || typeof value.addManager !== "function" || typeof value.getForHostId !== "function")
17158
17244
  return null;
17159
- return manager(value.getForHostId(hostId2));
17245
+ try {
17246
+ return manager(value.getForHostId(hostId2));
17247
+ } catch {
17248
+ return null;
17249
+ }
17160
17250
  }
17161
17251
  function discoverRendererHosts(root, ancestors = committedReactAncestors, managerFrom = requestManagerFromHookState) {
17162
17252
  const editors = [
@@ -17191,7 +17281,7 @@ function discoverRendererHosts(root, ancestors = committedReactAncestors, manage
17191
17281
  const value = hook.memoizedState;
17192
17282
  const manager = managerFrom(value);
17193
17283
  if (manager) managers.add(manager);
17194
- if (value && typeof value === "object" && "addManager" in value && typeof value.addManager === "function" && "getForHostId" in value && typeof value.getForHostId === "function" && "waitForManagerForHostId" in value && typeof value.waitForManagerForHostId === "function") {
17284
+ if (value && typeof value === "object" && "addManager" in value && typeof value.addManager === "function" && "getForHostId" in value && typeof value.getForHostId === "function") {
17195
17285
  registries.add(value);
17196
17286
  }
17197
17287
  hook = hook.next && typeof hook.next === "object" ? hook.next : null;
@@ -17206,7 +17296,13 @@ function discoverRendererHosts(root, ancestors = committedReactAncestors, manage
17206
17296
  }
17207
17297
  function resolveRendererHostManager(discovery, hostId2, managerFrom = requestManagerFromHookState) {
17208
17298
  if (!hostId2) return null;
17209
- const candidates = discovery.registries.length ? discovery.registries.map((registry2) => managerFrom(registry2.getForHostId(hostId2))) : discovery.managers;
17299
+ const candidates = discovery.registries.length ? discovery.registries.flatMap((registry2) => {
17300
+ try {
17301
+ return [managerFrom(registry2.getForHostId(hostId2))];
17302
+ } catch {
17303
+ return [];
17304
+ }
17305
+ }) : discovery.managers;
17210
17306
  const matching = new Set(
17211
17307
  candidates.filter(
17212
17308
  (manager) => manager && (manager.getHostId?.() ?? manager.requestClient.hostId) === hostId2 && (manager.requestClient.hostId === void 0 || manager.requestClient.hostId === hostId2)