@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
package/README.md CHANGED
@@ -7,7 +7,7 @@ Run Pi and Claude Code as first-class external harnesses inside Codex Desktop.
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install -g @codexhost/cli@0.13.2
10
+ npm install -g @codexhost/cli@0.14.0
11
11
  ```
12
12
 
13
13
  Do not install this package directly. npm selects it through the optional dependencies of `@codexhost/cli`.
@@ -1 +1 @@
1
- {"schemaVersion":1,"version":"0.13.2","distribution":"npm","target":"macos-x64"}
1
+ {"schemaVersion":1,"version":"0.14.0","distribution":"npm","target":"macos-x64"}
@@ -15489,6 +15489,15 @@ var harnessDisplaySetSchema = external_exports.strictObject({
15489
15489
  initializeOnly: external_exports.boolean().optional()
15490
15490
  });
15491
15491
 
15492
+ // packages/shared-contracts/dist/harness-presentation.js
15493
+ var localeSchema = external_exports.string().max(64).regex(/^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/u);
15494
+ var displayText = (maximum) => external_exports.string().min(1).max(maximum).refine((text) => text.trim().length > 0);
15495
+ var harnessLocalizationsSchema = external_exports.record(localeSchema, external_exports.object({
15496
+ label: displayText(256).optional(),
15497
+ description: displayText(1024).optional()
15498
+ }).strict()).refine((entries) => Object.keys(entries).length <= 16, "Too many locales");
15499
+ 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");
15500
+
15492
15501
  // packages/shared-contracts/dist/model-price-overrides.js
15493
15502
  var usdPerMillionTokens = external_exports.number().finite().nonnegative();
15494
15503
  var modelPriceOverrideSchema = external_exports.strictObject({
@@ -15538,10 +15547,19 @@ var model = external_exports.string().min(1).max(512);
15538
15547
  var project = external_exports.string().min(1).max(4096);
15539
15548
  var usageStatisticsParamsSchema = external_exports.strictObject({
15540
15549
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15550
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
15551
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
15552
+ try {
15553
+ new Intl.DateTimeFormat("en", { timeZone: value });
15554
+ return true;
15555
+ } catch {
15556
+ return false;
15557
+ }
15558
+ }, "Unsupported usage statistics timezone").optional(),
15541
15559
  harness: harness.optional(),
15542
15560
  model: model.nullable().optional(),
15543
15561
  project: project.nullable().optional(),
15544
- /** One local date inside the range. */
15562
+ /** One date in the query timezone inside the range. */
15545
15563
  date: localDate.optional()
15546
15564
  });
15547
15565
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -15577,7 +15595,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
15577
15595
  });
15578
15596
  var usageStatisticsResultSchema = external_exports.strictObject({
15579
15597
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15580
- /** First local date of the range; null for all time. */
15598
+ /** First date in the query timezone (Host local when omitted); null for all time. */
15581
15599
  from: localDate.nullable(),
15582
15600
  to: localDate,
15583
15601
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15617,7 +15635,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15617
15635
  totals: usageStatisticsTotalsSchema,
15618
15636
  /** Each date and Harness of the range: every filter except the day. */
15619
15637
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15620
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15638
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15621
15639
  hourly: external_exports.array(external_exports.strictObject({
15622
15640
  weekday: external_exports.number().int().min(0).max(6),
15623
15641
  hour: external_exports.number().int().min(0).max(23),
@@ -15677,6 +15695,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15677
15695
  "codexhost/harness/display-settings/set",
15678
15696
  "codexhost/harness/inspect",
15679
15697
  "codexhost/harness/installation",
15698
+ "codexhost/harness/installation/start",
15699
+ "codexhost/harness/installation/status",
15680
15700
  "codexhost/harness/launch-settings/get",
15681
15701
  "codexhost/harness/launch-settings/set",
15682
15702
  "codexhost/harness/web-ui/open",
@@ -15755,7 +15775,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15755
15775
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15756
15776
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15757
15777
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15778
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15779
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15780
+ kind: external_exports.literal("countdown"),
15781
+ id: external_exports.string().min(1).max(64),
15782
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15783
+ label: indicatorTextSchema(256).optional(),
15784
+ tooltip: indicatorTextSchema(1024).optional()
15785
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15786
+ message: "Composer indicator IDs must be unique"
15787
+ });
15758
15788
  var threadUsageSnapshotSchema = external_exports.object({
15789
+ composerIndicators: composerIndicatorsSchema.optional(),
15759
15790
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15760
15791
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15761
15792
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15828,8 +15859,24 @@ var threadUsageSnapshotSchema = external_exports.object({
15828
15859
  }
15829
15860
  });
15830
15861
  var usagePercentSchema = external_exports.number().finite().min(0).max(100);
15862
+ var accountCreditsPeriodSchema = external_exports.enum([
15863
+ "weekly",
15864
+ "monthly",
15865
+ "five_hour",
15866
+ "seven_day",
15867
+ "unknown"
15868
+ ]);
15869
+ var accountCreditsScopeSchema = external_exports.object({
15870
+ id: external_exports.string().min(1).max(256),
15871
+ label: external_exports.string().min(1).max(256),
15872
+ localizations: harnessLocalizationsSchema.optional()
15873
+ }).strict();
15831
15874
  var accountCreditsProductUsageSchema = external_exports.object({
15832
15875
  product: external_exports.string().min(1),
15876
+ /** Native period and scope, never inferred from the display name. */
15877
+ periodType: accountCreditsPeriodSchema.optional(),
15878
+ scope: accountCreditsScopeSchema.optional(),
15879
+ localizations: harnessLocalizationsSchema.optional(),
15833
15880
  used: external_exports.number().finite().nonnegative().optional(),
15834
15881
  // Zero is a real empty cap, not an absent field.
15835
15882
  limit: external_exports.number().finite().nonnegative().optional(),
@@ -15849,9 +15896,11 @@ var accountCreditsSnapshotSchema = external_exports.object({
15849
15896
  unit: external_exports.string().min(1).max(32).optional(),
15850
15897
  /** Native label when the primary limit is scoped to a model or product group. */
15851
15898
  label: external_exports.string().min(1).optional(),
15899
+ scope: accountCreditsScopeSchema.optional(),
15900
+ localizations: harnessLocalizationsSchema.optional(),
15852
15901
  usedPercent: usagePercentSchema,
15853
15902
  resetsAt: external_exports.string().min(1).optional(),
15854
- periodType: external_exports.enum(["weekly", "monthly", "five_hour", "seven_day", "unknown"]),
15903
+ periodType: accountCreditsPeriodSchema,
15855
15904
  productUsage: external_exports.array(accountCreditsProductUsageSchema).min(1).optional(),
15856
15905
  resetCredits: accountResetCreditsSchema.optional()
15857
15906
  }).strict();
@@ -15862,7 +15911,9 @@ var threadUsageInspectionParamsSchema = external_exports.object({
15862
15911
  var threadUsageInspectionSchema = external_exports.object({
15863
15912
  threadId: hostThreadIdSchema,
15864
15913
  usage: threadUsageSnapshotSchema.nullable(),
15865
- accountCredits: accountCreditsSnapshotSchema.optional()
15914
+ accountCredits: accountCreditsSnapshotSchema.optional(),
15915
+ /** Whether this source can provide cached account quota independently of usage. */
15916
+ accountCreditsSupported: external_exports.boolean().optional()
15866
15917
  }).strict();
15867
15918
 
15868
15919
  // packages/shared-contracts/dist/harness-accounts.js
@@ -15989,7 +16040,8 @@ var harnessPermissionModeSchema = external_exports.object({
15989
16040
  id: harnessPermissionModeIdSchema,
15990
16041
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
15991
16042
  description: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_DESCRIPTION_MAX_LENGTH).optional(),
15992
- dangerous: external_exports.boolean().optional()
16043
+ dangerous: external_exports.boolean().optional(),
16044
+ localizations: harnessLocalizationsSchema.optional()
15993
16045
  }).strict();
15994
16046
  var harnessPermissionModeCatalogSchema = external_exports.object({
15995
16047
  modes: external_exports.array(harnessPermissionModeSchema).min(1).max(HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH),
@@ -16142,7 +16194,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
16142
16194
  }).strict().optional(),
16143
16195
  autonomousTurns: external_exports.object({
16144
16196
  observe: external_exports.boolean()
16145
- }).strict().optional()
16197
+ }).strict().optional(),
16198
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
16199
+ steer: external_exports.boolean().optional()
16146
16200
  }).strict();
16147
16201
  var harnessConfigurationStateSchema = external_exports.object({
16148
16202
  effectiveModel: harnessModelRefSchema.optional(),
@@ -16189,7 +16243,9 @@ var harnessInspectionSchema = external_exports.union([
16189
16243
  var harnessInspectParamsSchema = external_exports.object({
16190
16244
  harnessId: harnessIdSchema,
16191
16245
  cwd: nonBlankTextSchema2.max(16384).optional(),
16192
- refresh: external_exports.boolean().optional()
16246
+ refresh: external_exports.boolean().optional(),
16247
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
16248
+ purpose: external_exports.literal("availability").optional()
16193
16249
  }).strict();
16194
16250
  var harnessWebUiOpenParamsSchema = external_exports.object({
16195
16251
  harnessId: harnessIdSchema
@@ -16272,6 +16328,15 @@ var threadOwnershipListResultSchema = external_exports.object({
16272
16328
  seen.add(thread.threadId);
16273
16329
  }
16274
16330
  });
16331
+ var threadSteeringInspectParamsSchema = external_exports.object({
16332
+ threadId: hostThreadIdSchema,
16333
+ /** The text about to be steered; a Harness command always stops and restarts. */
16334
+ text: external_exports.string().optional()
16335
+ }).strict();
16336
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
16337
+ var threadSteeringInspectResultSchema = external_exports.object({
16338
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
16339
+ }).strict();
16275
16340
 
16276
16341
  // packages/shared-contracts/dist/harness-plugins.js
16277
16342
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -16373,11 +16438,31 @@ var harnessInstallationStateSchema = external_exports.object({
16373
16438
  latestVersion: external_exports.string().min(1).max(128),
16374
16439
  updateAvailable: external_exports.boolean(),
16375
16440
  canUpdate: external_exports.boolean(),
16441
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
16442
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
16443
+ /** Official download opened by the user; does not imply an automatic installation. */
16444
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
16376
16445
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
16377
16446
  message: external_exports.string().max(2048).optional(),
16378
16447
  messageCode: external_exports.string().min(1).max(128).optional(),
16448
+ /** Safe plugin-owned explanation, distinct from raw diagnostic message. */
16449
+ notice: harnessLocalizedTextSchema.optional(),
16379
16450
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
16380
16451
  }).strict();
16452
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
16453
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
16454
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
16455
+ external_exports.object({
16456
+ taskId: external_exports.string().uuid(),
16457
+ status: external_exports.literal("succeeded"),
16458
+ result: harnessInstallationStateSchema
16459
+ }).strict(),
16460
+ external_exports.object({
16461
+ taskId: external_exports.string().uuid(),
16462
+ status: external_exports.literal("failed"),
16463
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
16464
+ }).strict()
16465
+ ]);
16381
16466
 
16382
16467
  // packages/shared-contracts/dist/codex-accounts.js
16383
16468
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16502,6 +16587,7 @@ var harnessCommandDescriptorSchema = external_exports.object({
16502
16587
  invocation: commandInvocationSchema,
16503
16588
  label: commandLabelSchema,
16504
16589
  description: commandDescriptionSchema.optional(),
16590
+ localizations: harnessLocalizationsSchema.optional(),
16505
16591
  argumentMode: external_exports.enum(["none", "text"]),
16506
16592
  /**
16507
16593
  * Native distinction reported by the Harness. Omitted when the Harness does