@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
@@ -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),
@@ -14984,6 +14996,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
14984
14996
  "codexhost/harness/display-settings/set",
14985
14997
  "codexhost/harness/inspect",
14986
14998
  "codexhost/harness/installation",
14999
+ "codexhost/harness/installation/start",
15000
+ "codexhost/harness/installation/status",
14987
15001
  "codexhost/harness/launch-settings/get",
14988
15002
  "codexhost/harness/launch-settings/set",
14989
15003
  "codexhost/harness/web-ui/open",
@@ -15059,7 +15073,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15059
15073
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15060
15074
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15061
15075
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15076
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text2) => text2.length <= maximum));
15077
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15078
+ kind: external_exports.literal("countdown"),
15079
+ id: external_exports.string().min(1).max(64),
15080
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15081
+ label: indicatorTextSchema(256).optional(),
15082
+ tooltip: indicatorTextSchema(1024).optional()
15083
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15084
+ message: "Composer indicator IDs must be unique"
15085
+ });
15062
15086
  var threadUsageSnapshotSchema = external_exports.object({
15087
+ composerIndicators: composerIndicatorsSchema.optional(),
15063
15088
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15064
15089
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15065
15090
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15467,7 +15492,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15467
15492
  }).strict().optional(),
15468
15493
  autonomousTurns: external_exports.object({
15469
15494
  observe: external_exports.boolean()
15470
- }).strict().optional()
15495
+ }).strict().optional(),
15496
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15497
+ steer: external_exports.boolean().optional()
15471
15498
  }).strict();
15472
15499
  var harnessConfigurationStateSchema = external_exports.object({
15473
15500
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15514,7 +15541,9 @@ var harnessInspectionSchema = external_exports.union([
15514
15541
  var harnessInspectParamsSchema = external_exports.object({
15515
15542
  harnessId: harnessIdSchema,
15516
15543
  cwd: nonBlankTextSchema2.max(16384).optional(),
15517
- refresh: external_exports.boolean().optional()
15544
+ refresh: external_exports.boolean().optional(),
15545
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15546
+ purpose: external_exports.literal("availability").optional()
15518
15547
  }).strict();
15519
15548
  var harnessWebUiOpenParamsSchema = external_exports.object({
15520
15549
  harnessId: harnessIdSchema
@@ -15597,6 +15626,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15597
15626
  seen.add(thread.threadId);
15598
15627
  }
15599
15628
  });
15629
+ var threadSteeringInspectParamsSchema = external_exports.object({
15630
+ threadId: hostThreadIdSchema,
15631
+ /** The text about to be steered; a Harness command always stops and restarts. */
15632
+ text: external_exports.string().optional()
15633
+ }).strict();
15634
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15635
+ var threadSteeringInspectResultSchema = external_exports.object({
15636
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15637
+ }).strict();
15600
15638
 
15601
15639
  // ../../shared-contracts/dist/harness-plugins.js
15602
15640
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15698,6 +15736,10 @@ var harnessInstallationStateSchema = external_exports.object({
15698
15736
  latestVersion: external_exports.string().min(1).max(128),
15699
15737
  updateAvailable: external_exports.boolean(),
15700
15738
  canUpdate: external_exports.boolean(),
15739
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15740
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15741
+ /** Official download opened by the user; does not imply an automatic installation. */
15742
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15701
15743
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15702
15744
  message: external_exports.string().max(2048).optional(),
15703
15745
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15705,6 +15747,20 @@ var harnessInstallationStateSchema = external_exports.object({
15705
15747
  notice: harnessLocalizedTextSchema.optional(),
15706
15748
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15707
15749
  }).strict();
15750
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15751
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15752
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15753
+ external_exports.object({
15754
+ taskId: external_exports.string().uuid(),
15755
+ status: external_exports.literal("succeeded"),
15756
+ result: harnessInstallationStateSchema
15757
+ }).strict(),
15758
+ external_exports.object({
15759
+ taskId: external_exports.string().uuid(),
15760
+ status: external_exports.literal("failed"),
15761
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15762
+ }).strict()
15763
+ ]);
15708
15764
 
15709
15765
  // ../../shared-contracts/dist/codex-accounts.js
15710
15766
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16190,6 +16246,18 @@ function sanitizeDiagnosticTail(value) {
16190
16246
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16191
16247
  }
16192
16248
 
16249
+ // ../../harness-adapter/dist/steer.js
16250
+ function unsupportedSteer(harnessLabel) {
16251
+ return {
16252
+ ok: false,
16253
+ error: {
16254
+ code: "unsupported",
16255
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16256
+ retryable: false
16257
+ }
16258
+ };
16259
+ }
16260
+
16193
16261
  // ../../harness-adapter/dist/usage.js
16194
16262
  var tokenFields = [
16195
16263
  "inputTokens",
@@ -16217,6 +16285,7 @@ var usageFields = /* @__PURE__ */ new Set([
16217
16285
  ...safeIntegerFields,
16218
16286
  ...percentFields,
16219
16287
  "sessionCacheUsage",
16288
+ "composerIndicators",
16220
16289
  "totalCostUsd",
16221
16290
  "totalCredits",
16222
16291
  "contextUsagePercent",
@@ -16239,6 +16308,7 @@ function parseHostUsage(value) {
16239
16308
  throw new Error(`Harness Usage contains unknown field '${key}'`);
16240
16309
  }
16241
16310
  }
16311
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
16242
16312
  for (const field2 of [
16243
16313
  "totalCredits",
16244
16314
  "contextUsagePercent",
@@ -16309,9 +16379,9 @@ function parseHostUsage(value) {
16309
16379
  if (value.costSource !== "publicPrice") {
16310
16380
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
16311
16381
  }
16312
- return { ...value, unpricedModels: [...models] };
16382
+ return { ...value, ...indicators, unpricedModels: [...models] };
16313
16383
  }
16314
- return { ...value };
16384
+ return { ...value, ...indicators };
16315
16385
  }
16316
16386
  var requestTokenFields = [
16317
16387
  "inputTokens",
@@ -19419,6 +19489,7 @@ async function readHistory(transport, snapshot, events = []) {
19419
19489
 
19420
19490
  // dist/capabilities.js
19421
19491
  var ZCODE_CAPABILITIES = {
19492
+ steer: false,
19422
19493
  configuration: {
19423
19494
  selectModel: true,
19424
19495
  selectThinkingOption: true,
@@ -19593,6 +19664,8 @@ var ZcodeSession = class {
19593
19664
  if (this.#closed || this.#faulted)
19594
19665
  return failure("invalidState", "ZCode session is closed");
19595
19666
  try {
19667
+ if (command.type === "turn.steer")
19668
+ return unsupportedSteer("ZCode");
19596
19669
  if (command.type === "turn.start") {
19597
19670
  if (!hostTurnIdSchema.safeParse(command.turnId).success || !command.input.length || command.input.some((item) => item.type !== "text") || !command.input.some((item) => item.text.trim()))
19598
19671
  return failure("invalidRequest", "ZCode requires nonempty text and a turn ID");