@karlorz/codexhost-cli-win32-x64 0.13.3-7 → 0.14.0-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 (34) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +55 -4
  4. package/app/console-web.js +344 -54
  5. package/app/cpa-live-voice-hook.js +55 -4
  6. package/app/desktop-controller.mjs +69 -8
  7. package/app/host-runtime.mjs +743 -230
  8. package/app/plugins/antigravity/plugin.mjs +88 -12
  9. package/app/plugins/claude-code/plugin.mjs +397 -21
  10. package/app/plugins/codebuddy/plugin.mjs +107 -17
  11. package/app/plugins/codex-usage/plugin.mjs +67 -7
  12. package/app/plugins/copilot/assets/icon.png +0 -0
  13. package/app/plugins/copilot/manifest.json +26 -0
  14. package/app/plugins/copilot/plugin.mjs +34645 -0
  15. package/app/plugins/cursor-cli/plugin.mjs +88 -6
  16. package/app/plugins/deepseek-harness/plugin.mjs +73 -6
  17. package/app/plugins/enabled.json +1 -0
  18. package/app/plugins/grok/plugin.mjs +272 -60
  19. package/app/plugins/hermes/plugin.mjs +70 -4
  20. package/app/plugins/kimi-code/plugin.mjs +73 -6
  21. package/app/plugins/kiro-cli/plugin.mjs +73 -6
  22. package/app/plugins/omp/plugin.mjs +73 -112
  23. package/app/plugins/opencode/plugin.mjs +75 -6
  24. package/app/plugins/pi/plugin.mjs +204 -44
  25. package/app/plugins/qoder/plugin.mjs +73 -6
  26. package/app/plugins/qoder-cn/plugin.mjs +73 -6
  27. package/app/plugins/workbuddy/plugin.mjs +368 -41
  28. package/app/plugins/zcode/plugin.mjs +74 -6
  29. package/app/renderer-extension.js +749 -157
  30. package/bin/codexhost.exe +0 -0
  31. package/libexec/codexhost-node-repl.exe +0 -0
  32. package/libexec/codexhost-shim.exe +0 -0
  33. package/libexec/codexhost-updater.exe +0 -0
  34. package/package.json +1 -1
@@ -15023,10 +15023,19 @@ var model = external_exports.string().min(1).max(512);
15023
15023
  var project = external_exports.string().min(1).max(4096);
15024
15024
  var usageStatisticsParamsSchema = external_exports.strictObject({
15025
15025
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15026
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
15027
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
15028
+ try {
15029
+ new Intl.DateTimeFormat("en", { timeZone: value });
15030
+ return true;
15031
+ } catch {
15032
+ return false;
15033
+ }
15034
+ }, "Unsupported usage statistics timezone").optional(),
15026
15035
  harness: harness.optional(),
15027
15036
  model: model.nullable().optional(),
15028
15037
  project: project.nullable().optional(),
15029
- /** One local date inside the range. */
15038
+ /** One date in the query timezone inside the range. */
15030
15039
  date: localDate.optional()
15031
15040
  });
15032
15041
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -15062,7 +15071,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
15062
15071
  });
15063
15072
  var usageStatisticsResultSchema = external_exports.strictObject({
15064
15073
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
15065
- /** First local date of the range; null for all time. */
15074
+ /** First date in the query timezone (Host local when omitted); null for all time. */
15066
15075
  from: localDate.nullable(),
15067
15076
  to: localDate,
15068
15077
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15102,7 +15111,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15102
15111
  totals: usageStatisticsTotalsSchema,
15103
15112
  /** Each date and Harness of the range: every filter except the day. */
15104
15113
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15105
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15114
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15106
15115
  hourly: external_exports.array(external_exports.strictObject({
15107
15116
  weekday: external_exports.number().int().min(0).max(6),
15108
15117
  hour: external_exports.number().int().min(0).max(23),
@@ -15193,6 +15202,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15193
15202
  "codexhost/harness/display-settings/set",
15194
15203
  "codexhost/harness/inspect",
15195
15204
  "codexhost/harness/installation",
15205
+ "codexhost/harness/installation/start",
15206
+ "codexhost/harness/installation/status",
15196
15207
  "codexhost/harness/launch-settings/get",
15197
15208
  "codexhost/harness/launch-settings/set",
15198
15209
  "codexhost/harness/grok-computer-use/get",
@@ -15270,7 +15281,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15270
15281
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15271
15282
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15272
15283
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15284
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15285
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15286
+ kind: external_exports.literal("countdown"),
15287
+ id: external_exports.string().min(1).max(64),
15288
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15289
+ label: indicatorTextSchema(256).optional(),
15290
+ tooltip: indicatorTextSchema(1024).optional()
15291
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15292
+ message: "Composer indicator IDs must be unique"
15293
+ });
15273
15294
  var threadUsageSnapshotSchema = external_exports.object({
15295
+ composerIndicators: composerIndicatorsSchema.optional(),
15274
15296
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15275
15297
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15276
15298
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15678,7 +15700,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15678
15700
  }).strict().optional(),
15679
15701
  autonomousTurns: external_exports.object({
15680
15702
  observe: external_exports.boolean()
15681
- }).strict().optional()
15703
+ }).strict().optional(),
15704
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15705
+ steer: external_exports.boolean().optional()
15682
15706
  }).strict();
15683
15707
  var harnessConfigurationStateSchema = external_exports.object({
15684
15708
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15810,6 +15834,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15810
15834
  seen.add(thread.threadId);
15811
15835
  }
15812
15836
  });
15837
+ var threadSteeringInspectParamsSchema = external_exports.object({
15838
+ threadId: hostThreadIdSchema,
15839
+ /** The text about to be steered; a Harness command always stops and restarts. */
15840
+ text: external_exports.string().optional()
15841
+ }).strict();
15842
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15843
+ var threadSteeringInspectResultSchema = external_exports.object({
15844
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15845
+ }).strict();
15813
15846
 
15814
15847
  // ../../shared-contracts/dist/harness-plugins.js
15815
15848
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15931,6 +15964,10 @@ var harnessInstallationStateSchema = external_exports.object({
15931
15964
  latestVersion: external_exports.string().min(1).max(128),
15932
15965
  updateAvailable: external_exports.boolean(),
15933
15966
  canUpdate: external_exports.boolean(),
15967
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15968
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15969
+ /** Official download opened by the user; does not imply an automatic installation. */
15970
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15934
15971
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15935
15972
  message: external_exports.string().max(2048).optional(),
15936
15973
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15938,6 +15975,20 @@ var harnessInstallationStateSchema = external_exports.object({
15938
15975
  notice: harnessLocalizedTextSchema.optional(),
15939
15976
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15940
15977
  }).strict();
15978
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15979
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15980
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15981
+ external_exports.object({
15982
+ taskId: external_exports.string().uuid(),
15983
+ status: external_exports.literal("succeeded"),
15984
+ result: harnessInstallationStateSchema
15985
+ }).strict(),
15986
+ external_exports.object({
15987
+ taskId: external_exports.string().uuid(),
15988
+ status: external_exports.literal("failed"),
15989
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15990
+ }).strict()
15991
+ ]);
15941
15992
 
15942
15993
  // ../../shared-contracts/dist/codex-accounts.js
15943
15994
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -16486,6 +16537,18 @@ function sanitizeDiagnosticTail(value) {
16486
16537
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
16487
16538
  }
16488
16539
 
16540
+ // ../../harness-adapter/dist/steer.js
16541
+ function unsupportedSteer(harnessLabel) {
16542
+ return {
16543
+ ok: false,
16544
+ error: {
16545
+ code: "unsupported",
16546
+ message: `${harnessLabel} cannot steer an active Turn natively`,
16547
+ retryable: false
16548
+ }
16549
+ };
16550
+ }
16551
+
16489
16552
  // ../../harness-adapter/dist/usage.js
16490
16553
  var tokenFields = [
16491
16554
  "inputTokens",
@@ -16513,6 +16576,7 @@ var usageFields = /* @__PURE__ */ new Set([
16513
16576
  ...safeIntegerFields,
16514
16577
  ...percentFields,
16515
16578
  "sessionCacheUsage",
16579
+ "composerIndicators",
16516
16580
  "totalCostUsd",
16517
16581
  "totalCredits",
16518
16582
  "contextUsagePercent",
@@ -16535,6 +16599,7 @@ function parseHostUsage(value) {
16535
16599
  throw new Error(`Harness Usage contains unknown field '${key}'`);
16536
16600
  }
16537
16601
  }
16602
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
16538
16603
  for (const field of [
16539
16604
  "totalCredits",
16540
16605
  "contextUsagePercent",
@@ -16605,9 +16670,9 @@ function parseHostUsage(value) {
16605
16670
  if (value.costSource !== "publicPrice") {
16606
16671
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
16607
16672
  }
16608
- return { ...value, unpricedModels: [...models] };
16673
+ return { ...value, ...indicators, unpricedModels: [...models] };
16609
16674
  }
16610
- return { ...value };
16675
+ return { ...value, ...indicators };
16611
16676
  }
16612
16677
  var requestTokenFields = [
16613
16678
  "inputTokens",
@@ -23650,6 +23715,8 @@ var CursorSession = class {
23650
23715
  return rejected("invalidState", "Cursor session is closed");
23651
23716
  if (command.type === "interaction.respond")
23652
23717
  return this.#interactions.respond(command);
23718
+ if (command.type === "turn.steer")
23719
+ return unsupportedSteer("Cursor ACP");
23653
23720
  if (command.type === "turn.cancel") {
23654
23721
  if (!this.#active || this.#active.command.turnId !== command.turnId)
23655
23722
  return rejected("invalidState", "Cursor turn is not active");
@@ -23860,6 +23927,7 @@ var harnessBrokerMethodSchema = external_exports.enum([
23860
23927
  "adapter.open",
23861
23928
  "adapter.subagent.readSnapshot",
23862
23929
  "session.readSnapshot",
23930
+ "session.readCapabilities",
23863
23931
  "session.refreshUsage",
23864
23932
  "session.execute",
23865
23933
  "session.commands.list",
@@ -24040,6 +24108,11 @@ var turnStartSchema = external_exports.object({
24040
24108
  turnId: hostTurnIdSchema,
24041
24109
  input: external_exports.array(textInputSchema)
24042
24110
  }).strict();
24111
+ var turnSteerSchema = external_exports.object({
24112
+ type: external_exports.literal("turn.steer"),
24113
+ turnId: hostTurnIdSchema,
24114
+ input: external_exports.array(textInputSchema)
24115
+ }).strict();
24043
24116
  var turnCancelSchema = external_exports.object({ type: external_exports.literal("turn.cancel"), turnId: hostTurnIdSchema }).strict();
24044
24117
  var interactionResponseSchema = external_exports.union([
24045
24118
  external_exports.object({
@@ -24065,6 +24138,7 @@ var permissionSelectSchema = external_exports.object({
24065
24138
  }).strict();
24066
24139
  var brokerHostCommandSchema = external_exports.discriminatedUnion("type", [
24067
24140
  turnStartSchema,
24141
+ turnSteerSchema,
24068
24142
  turnCancelSchema,
24069
24143
  interactionRespondSchema,
24070
24144
  modelSelectSchema,
@@ -24257,6 +24331,7 @@ function parseSessionMetadata(value) {
24257
24331
  sessionId: candidate.sessionId,
24258
24332
  sessionGeneration: candidate.sessionGeneration,
24259
24333
  capabilities: harnessSessionCapabilitiesSchema.parse(candidate.capabilities),
24334
+ readCapabilities: candidate.readCapabilities === true,
24260
24335
  initialState: state,
24261
24336
  initialUsage: candidate.initialUsage === null ? null : parseHostUsage(candidate.initialUsage),
24262
24337
  commands: candidate.commands === true
@@ -24608,6 +24683,11 @@ var BrokeredHarnessSession = class {
24608
24683
  event: { type: "session.faulted", error: unavailable(error51.message) }
24609
24684
  });
24610
24685
  }
24686
+ async readCapabilities() {
24687
+ if (!this.#metadata.readCapabilities)
24688
+ return { ...this.capabilities, steer: false };
24689
+ return harnessSessionCapabilitiesSchema.parse(await this.#request("session.readCapabilities", {}));
24690
+ }
24611
24691
  async refreshUsage() {
24612
24692
  await this.#request("session.refreshUsage", {});
24613
24693
  }
@@ -24639,6 +24719,8 @@ var BrokeredHarnessSession = class {
24639
24719
  try {
24640
24720
  return parseHarnessResult(await this.#request("session.execute", { command }));
24641
24721
  } catch (error51) {
24722
+ if (command.type === "turn.steer")
24723
+ throw error51;
24642
24724
  return {
24643
24725
  ok: false,
24644
24726
  error: unavailable(error51 instanceof Error ? error51.message : String(error51))
@@ -18903,10 +18903,19 @@ var model = external_exports.string().min(1).max(512);
18903
18903
  var project = external_exports.string().min(1).max(4096);
18904
18904
  var usageStatisticsParamsSchema = external_exports.strictObject({
18905
18905
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
18906
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
18907
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
18908
+ try {
18909
+ new Intl.DateTimeFormat("en", { timeZone: value });
18910
+ return true;
18911
+ } catch {
18912
+ return false;
18913
+ }
18914
+ }, "Unsupported usage statistics timezone").optional(),
18906
18915
  harness: harness.optional(),
18907
18916
  model: model.nullable().optional(),
18908
18917
  project: project.nullable().optional(),
18909
- /** One local date inside the range. */
18918
+ /** One date in the query timezone inside the range. */
18910
18919
  date: localDate.optional()
18911
18920
  });
18912
18921
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -18942,7 +18951,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
18942
18951
  });
18943
18952
  var usageStatisticsResultSchema = external_exports.strictObject({
18944
18953
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
18945
- /** First local date of the range; null for all time. */
18954
+ /** First date in the query timezone (Host local when omitted); null for all time. */
18946
18955
  from: localDate.nullable(),
18947
18956
  to: localDate,
18948
18957
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -18982,7 +18991,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
18982
18991
  totals: usageStatisticsTotalsSchema,
18983
18992
  /** Each date and Harness of the range: every filter except the day. */
18984
18993
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
18985
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
18994
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
18986
18995
  hourly: external_exports.array(external_exports.strictObject({
18987
18996
  weekday: external_exports.number().int().min(0).max(6),
18988
18997
  hour: external_exports.number().int().min(0).max(23),
@@ -19073,6 +19082,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
19073
19082
  "codexhost/harness/display-settings/set",
19074
19083
  "codexhost/harness/inspect",
19075
19084
  "codexhost/harness/installation",
19085
+ "codexhost/harness/installation/start",
19086
+ "codexhost/harness/installation/status",
19076
19087
  "codexhost/harness/launch-settings/get",
19077
19088
  "codexhost/harness/launch-settings/set",
19078
19089
  "codexhost/harness/grok-computer-use/get",
@@ -19150,7 +19161,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
19150
19161
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
19151
19162
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
19152
19163
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
19164
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
19165
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
19166
+ kind: external_exports.literal("countdown"),
19167
+ id: external_exports.string().min(1).max(64),
19168
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
19169
+ label: indicatorTextSchema(256).optional(),
19170
+ tooltip: indicatorTextSchema(1024).optional()
19171
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
19172
+ message: "Composer indicator IDs must be unique"
19173
+ });
19153
19174
  var threadUsageSnapshotSchema = external_exports.object({
19175
+ composerIndicators: composerIndicatorsSchema.optional(),
19154
19176
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
19155
19177
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
19156
19178
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -19558,7 +19580,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
19558
19580
  }).strict().optional(),
19559
19581
  autonomousTurns: external_exports.object({
19560
19582
  observe: external_exports.boolean()
19561
- }).strict().optional()
19583
+ }).strict().optional(),
19584
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
19585
+ steer: external_exports.boolean().optional()
19562
19586
  }).strict();
19563
19587
  var harnessConfigurationStateSchema = external_exports.object({
19564
19588
  effectiveModel: harnessModelRefSchema.optional(),
@@ -19690,6 +19714,15 @@ var threadOwnershipListResultSchema = external_exports.object({
19690
19714
  seen.add(thread.threadId);
19691
19715
  }
19692
19716
  });
19717
+ var threadSteeringInspectParamsSchema = external_exports.object({
19718
+ threadId: hostThreadIdSchema,
19719
+ /** The text about to be steered; a Harness command always stops and restarts. */
19720
+ text: external_exports.string().optional()
19721
+ }).strict();
19722
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
19723
+ var threadSteeringInspectResultSchema = external_exports.object({
19724
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
19725
+ }).strict();
19693
19726
 
19694
19727
  // ../../shared-contracts/dist/harness-plugins.js
19695
19728
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -19811,6 +19844,10 @@ var harnessInstallationStateSchema = external_exports.object({
19811
19844
  latestVersion: external_exports.string().min(1).max(128),
19812
19845
  updateAvailable: external_exports.boolean(),
19813
19846
  canUpdate: external_exports.boolean(),
19847
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
19848
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
19849
+ /** Official download opened by the user; does not imply an automatic installation. */
19850
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
19814
19851
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
19815
19852
  message: external_exports.string().max(2048).optional(),
19816
19853
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -19818,6 +19855,20 @@ var harnessInstallationStateSchema = external_exports.object({
19818
19855
  notice: harnessLocalizedTextSchema.optional(),
19819
19856
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
19820
19857
  }).strict();
19858
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
19859
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
19860
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
19861
+ external_exports.object({
19862
+ taskId: external_exports.string().uuid(),
19863
+ status: external_exports.literal("succeeded"),
19864
+ result: harnessInstallationStateSchema
19865
+ }).strict(),
19866
+ external_exports.object({
19867
+ taskId: external_exports.string().uuid(),
19868
+ status: external_exports.literal("failed"),
19869
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
19870
+ }).strict()
19871
+ ]);
19821
19872
 
19822
19873
  // ../../shared-contracts/dist/codex-accounts.js
19823
19874
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -20375,6 +20426,18 @@ function sanitizeDiagnosticTail(value) {
20375
20426
  return redacted.length <= DIAGNOSTIC_TAIL_MAX_LENGTH ? redacted : redacted.slice(-DIAGNOSTIC_TAIL_MAX_LENGTH);
20376
20427
  }
20377
20428
 
20429
+ // ../../harness-adapter/dist/steer.js
20430
+ function unsupportedSteer(harnessLabel) {
20431
+ return {
20432
+ ok: false,
20433
+ error: {
20434
+ code: "unsupported",
20435
+ message: `${harnessLabel} cannot steer an active Turn natively`,
20436
+ retryable: false
20437
+ }
20438
+ };
20439
+ }
20440
+
20378
20441
  // ../../harness-adapter/dist/usage.js
20379
20442
  var tokenFields = [
20380
20443
  "inputTokens",
@@ -20402,6 +20465,7 @@ var usageFields = /* @__PURE__ */ new Set([
20402
20465
  ...safeIntegerFields,
20403
20466
  ...percentFields,
20404
20467
  "sessionCacheUsage",
20468
+ "composerIndicators",
20405
20469
  "totalCostUsd",
20406
20470
  "totalCredits",
20407
20471
  "contextUsagePercent",
@@ -20424,6 +20488,7 @@ function parseHostUsage(value) {
20424
20488
  throw new Error(`Harness Usage contains unknown field '${key}'`);
20425
20489
  }
20426
20490
  }
20491
+ const indicators = value.composerIndicators === void 0 ? {} : { composerIndicators: composerIndicatorsSchema.parse(value.composerIndicators) };
20427
20492
  for (const field of [
20428
20493
  "totalCredits",
20429
20494
  "contextUsagePercent",
@@ -20494,9 +20559,9 @@ function parseHostUsage(value) {
20494
20559
  if (value.costSource !== "publicPrice") {
20495
20560
  throw new Error("Harness Usage 'unpricedModels' must be provided with a 'publicPrice' cost");
20496
20561
  }
20497
- return { ...value, unpricedModels: [...models] };
20562
+ return { ...value, ...indicators, unpricedModels: [...models] };
20498
20563
  }
20499
- return { ...value };
20564
+ return { ...value, ...indicators };
20500
20565
  }
20501
20566
  var requestTokenFields = [
20502
20567
  "inputTokens",
@@ -28878,6 +28943,8 @@ var ModernHarnessSession = class {
28878
28943
  switch (command.type) {
28879
28944
  case "turn.start":
28880
28945
  return this.#start(command);
28946
+ case "turn.steer":
28947
+ return Promise.resolve(unsupportedSteer("DeepSeek Harness"));
28881
28948
  case "turn.cancel":
28882
28949
  return this.#cancel(command);
28883
28950
  case "interaction.respond":
@@ -17,6 +17,7 @@
17
17
  "qoder-cn",
18
18
  "kimi-code",
19
19
  "zcode",
20
+ "copilot",
20
21
  "codex-usage"
21
22
  ]
22
23
  }