@codexhost/cli-darwin-x64 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.
@@ -504,10 +504,13 @@ function usageSessionTitle(value) {
504
504
  return void 0;
505
505
  if (normalized.length <= MAX_SESSION_TITLE_LENGTH)
506
506
  return normalized;
507
- const characters = [...normalized];
508
- if (characters.length <= MAX_SESSION_TITLE_LENGTH)
509
- return normalized;
510
- return `${characters.slice(0, MAX_SESSION_TITLE_LENGTH - 1).join("").trimEnd()}…`;
507
+ let title = "";
508
+ for (const character of normalized) {
509
+ if (title.length + character.length >= MAX_SESSION_TITLE_LENGTH)
510
+ break;
511
+ title += character;
512
+ }
513
+ return `${title.trimEnd()}…`;
511
514
  }
512
515
  function sessionIdOk(value) {
513
516
  return typeof value === "string" && value.length > 0 && value.length <= MAX_SESSION_ID_LENGTH;
@@ -15199,10 +15202,19 @@ var model = external_exports.string().min(1).max(512);
15199
15202
  var project = external_exports.string().min(1).max(4096);
15200
15203
  var usageStatisticsParamsSchema = external_exports.strictObject({
15201
15204
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15205
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
15206
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
15207
+ try {
15208
+ new Intl.DateTimeFormat("en", { timeZone: value });
15209
+ return true;
15210
+ } catch {
15211
+ return false;
15212
+ }
15213
+ }, "Unsupported usage statistics timezone").optional(),
15202
15214
  harness: harness.optional(),
15203
15215
  model: model.nullable().optional(),
15204
15216
  project: project.nullable().optional(),
15205
- /** One local date inside the range. */
15217
+ /** One date in the query timezone inside the range. */
15206
15218
  date: localDate.optional()
15207
15219
  });
15208
15220
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -15238,7 +15250,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
15238
15250
  });
15239
15251
  var usageStatisticsResultSchema = external_exports.strictObject({
15240
15252
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15241
- /** First local date of the range; null for all time. */
15253
+ /** First date in the query timezone (Host local when omitted); null for all time. */
15242
15254
  from: localDate.nullable(),
15243
15255
  to: localDate,
15244
15256
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15278,7 +15290,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15278
15290
  totals: usageStatisticsTotalsSchema,
15279
15291
  /** Each date and Harness of the range: every filter except the day. */
15280
15292
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15281
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15293
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15282
15294
  hourly: external_exports.array(external_exports.strictObject({
15283
15295
  weekday: external_exports.number().int().min(0).max(6),
15284
15296
  hour: external_exports.number().int().min(0).max(23),
@@ -15338,6 +15350,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15338
15350
  "codexhost/harness/display-settings/set",
15339
15351
  "codexhost/harness/inspect",
15340
15352
  "codexhost/harness/installation",
15353
+ "codexhost/harness/installation/start",
15354
+ "codexhost/harness/installation/status",
15341
15355
  "codexhost/harness/launch-settings/get",
15342
15356
  "codexhost/harness/launch-settings/set",
15343
15357
  "codexhost/harness/web-ui/open",
@@ -15413,7 +15427,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15413
15427
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15414
15428
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15415
15429
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15430
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15431
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15432
+ kind: external_exports.literal("countdown"),
15433
+ id: external_exports.string().min(1).max(64),
15434
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15435
+ label: indicatorTextSchema(256).optional(),
15436
+ tooltip: indicatorTextSchema(1024).optional()
15437
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15438
+ message: "Composer indicator IDs must be unique"
15439
+ });
15416
15440
  var threadUsageSnapshotSchema = external_exports.object({
15441
+ composerIndicators: composerIndicatorsSchema.optional(),
15417
15442
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15418
15443
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15419
15444
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15821,7 +15846,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15821
15846
  }).strict().optional(),
15822
15847
  autonomousTurns: external_exports.object({
15823
15848
  observe: external_exports.boolean()
15824
- }).strict().optional()
15849
+ }).strict().optional(),
15850
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15851
+ steer: external_exports.boolean().optional()
15825
15852
  }).strict();
15826
15853
  var harnessConfigurationStateSchema = external_exports.object({
15827
15854
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15868,7 +15895,9 @@ var harnessInspectionSchema = external_exports.union([
15868
15895
  var harnessInspectParamsSchema = external_exports.object({
15869
15896
  harnessId: harnessIdSchema,
15870
15897
  cwd: nonBlankTextSchema2.max(16384).optional(),
15871
- refresh: external_exports.boolean().optional()
15898
+ refresh: external_exports.boolean().optional(),
15899
+ /** `availability` asks only whether the Harness can run; see `InspectHarnessInput.purpose`. */
15900
+ purpose: external_exports.literal("availability").optional()
15872
15901
  }).strict();
15873
15902
  var harnessWebUiOpenParamsSchema = external_exports.object({
15874
15903
  harnessId: harnessIdSchema
@@ -15951,6 +15980,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15951
15980
  seen.add(thread.threadId);
15952
15981
  }
15953
15982
  });
15983
+ var threadSteeringInspectParamsSchema = external_exports.object({
15984
+ threadId: hostThreadIdSchema,
15985
+ /** The text about to be steered; a Harness command always stops and restarts. */
15986
+ text: external_exports.string().optional()
15987
+ }).strict();
15988
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15989
+ var threadSteeringInspectResultSchema = external_exports.object({
15990
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15991
+ }).strict();
15954
15992
 
15955
15993
  // ../../shared-contracts/dist/harness-plugins.js
15956
15994
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -16052,6 +16090,10 @@ var harnessInstallationStateSchema = external_exports.object({
16052
16090
  latestVersion: external_exports.string().min(1).max(128),
16053
16091
  updateAvailable: external_exports.boolean(),
16054
16092
  canUpdate: external_exports.boolean(),
16093
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
16094
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
16095
+ /** Official download opened by the user; does not imply an automatic installation. */
16096
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
16055
16097
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
16056
16098
  message: external_exports.string().max(2048).optional(),
16057
16099
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -16059,6 +16101,20 @@ var harnessInstallationStateSchema = external_exports.object({
16059
16101
  notice: harnessLocalizedTextSchema.optional(),
16060
16102
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
16061
16103
  }).strict();
16104
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
16105
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
16106
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
16107
+ external_exports.object({
16108
+ taskId: external_exports.string().uuid(),
16109
+ status: external_exports.literal("succeeded"),
16110
+ result: harnessInstallationStateSchema
16111
+ }).strict(),
16112
+ external_exports.object({
16113
+ taskId: external_exports.string().uuid(),
16114
+ status: external_exports.literal("failed"),
16115
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
16116
+ }).strict()
16117
+ ]);
16062
16118
 
16063
16119
  // ../../shared-contracts/dist/codex-accounts.js
16064
16120
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16544,6 +16600,18 @@ function sanitizeDiagnosticTail(value) {
16544
16600
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16545
16601
  }
16546
16602
 
16603
+ // ../../harness-adapter/dist/steer.js
16604
+ function unsupportedSteer(harnessLabel) {
16605
+ return {
16606
+ ok: false,
16607
+ error: {
16608
+ code: "unsupported",
16609
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16610
+ retryable: false
16611
+ }
16612
+ };
16613
+ }
16614
+
16547
16615
  // ../../harness-adapter/dist/usage.js
16548
16616
  var tokenFields = [
16549
16617
  "inputTokens",
@@ -16571,6 +16639,7 @@ var usageFields = /* @__PURE__ */ new Set([
16571
16639
  ...safeIntegerFields,
16572
16640
  ...percentFields,
16573
16641
  "sessionCacheUsage",
16642
+ "composerIndicators",
16574
16643
  "totalCostUsd",
16575
16644
  "totalCredits",
16576
16645
  "contextUsagePercent",
@@ -16593,6 +16662,7 @@ function parseHostUsage(value) {
16593
16662
  throw new Error(`Harness Usage contains unknown field '${key}'`);
16594
16663
  }
16595
16664
  }
16665
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
16596
16666
  for (const field of [
16597
16667
  "totalCredits",
16598
16668
  "contextUsagePercent",
@@ -16663,9 +16733,9 @@ function parseHostUsage(value) {
16663
16733
  if (value.costSource !== "publicPrice") {
16664
16734
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
16665
16735
  }
16666
- return { ...value, unpricedModels: [...models] };
16736
+ return { ...value, ...indicators, unpricedModels: [...models] };
16667
16737
  }
16668
- return { ...value };
16738
+ return { ...value, ...indicators };
16669
16739
  }
16670
16740
  var requestTokenFields = [
16671
16741
  "inputTokens",
@@ -23781,6 +23851,8 @@ var OpenCodeHarnessSession = class {
23781
23851
  if (this.#phase !== "open") {
23782
23852
  return { ok: false, error: invalidState("OpenCode Session is not open") };
23783
23853
  }
23854
+ if (command.type === "turn.steer")
23855
+ return unsupportedSteer("OpenCode");
23784
23856
  if (command.type === "turn.cancel")
23785
23857
  return this.#cancel(command);
23786
23858
  if (command.type === "interaction.respond")
@@ -27461,6 +27533,8 @@ var V2Session = class {
27461
27533
  async execute(command) {
27462
27534
  if (this.#closed)
27463
27535
  return { ok: false, error: failure("OpenCode Session is closed", "invalidState") };
27536
+ if (command.type === "turn.steer")
27537
+ return unsupportedSteer("OpenCode");
27464
27538
  if (command.type === "turn.start")
27465
27539
  return this.#start(command, false);
27466
27540
  if (command.type === "turn.cancel") {