@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
@@ -14657,10 +14657,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14657
14657
  var project = external_exports.string().min(1).max(4096);
14658
14658
  var usageStatisticsParamsSchema = external_exports.strictObject({
14659
14659
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14660
+ /** Display timezone for ranges, dates and hourly buckets; omitted means the Host's local zone. */
14661
+ timeZone: external_exports.string().min(1).max(128).refine((value) => {
14662
+ try {
14663
+ new Intl.DateTimeFormat("en", { timeZone: value });
14664
+ return true;
14665
+ } catch {
14666
+ return false;
14667
+ }
14668
+ }, "Unsupported usage statistics timezone").optional(),
14660
14669
  harness: harness.optional(),
14661
14670
  model: model.nullable().optional(),
14662
14671
  project: project.nullable().optional(),
14663
- /** One local date inside the range. */
14672
+ /** One date in the query timezone inside the range. */
14664
14673
  date: localDate.optional()
14665
14674
  });
14666
14675
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -14696,7 +14705,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14696
14705
  });
14697
14706
  var usageStatisticsResultSchema = external_exports.strictObject({
14698
14707
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14699
- /** First local date of the range; null for all time. */
14708
+ /** First date in the query timezone (Host local when omitted); null for all time. */
14700
14709
  from: localDate.nullable(),
14701
14710
  to: localDate,
14702
14711
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -14736,7 +14745,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14736
14745
  totals: usageStatisticsTotalsSchema,
14737
14746
  /** Each date and Harness of the range: every filter except the day. */
14738
14747
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
14739
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
14748
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
14740
14749
  hourly: external_exports.array(external_exports.strictObject({
14741
14750
  weekday: external_exports.number().int().min(0).max(6),
14742
14751
  hour: external_exports.number().int().min(0).max(23),
@@ -14846,6 +14855,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14846
14855
  "codexhost/harness/display-settings/set",
14847
14856
  "codexhost/harness/inspect",
14848
14857
  "codexhost/harness/installation",
14858
+ "codexhost/harness/installation/start",
14859
+ "codexhost/harness/installation/status",
14849
14860
  "codexhost/harness/launch-settings/get",
14850
14861
  "codexhost/harness/launch-settings/set",
14851
14862
  "codexhost/harness/grok-computer-use/get",
@@ -14923,7 +14934,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
14923
14934
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
14924
14935
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
14925
14936
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
14937
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
14938
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
14939
+ kind: external_exports.literal("countdown"),
14940
+ id: external_exports.string().min(1).max(64),
14941
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
14942
+ label: indicatorTextSchema(256).optional(),
14943
+ tooltip: indicatorTextSchema(1024).optional()
14944
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
14945
+ message: "Composer indicator IDs must be unique"
14946
+ });
14926
14947
  var threadUsageSnapshotSchema = external_exports.object({
14948
+ composerIndicators: composerIndicatorsSchema.optional(),
14927
14949
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
14928
14950
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
14929
14951
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15331,7 +15353,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15331
15353
  }).strict().optional(),
15332
15354
  autonomousTurns: external_exports.object({
15333
15355
  observe: external_exports.boolean()
15334
- }).strict().optional()
15356
+ }).strict().optional(),
15357
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15358
+ steer: external_exports.boolean().optional()
15335
15359
  }).strict();
15336
15360
  var harnessConfigurationStateSchema = external_exports.object({
15337
15361
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15463,6 +15487,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15463
15487
  seen.add(thread.threadId);
15464
15488
  }
15465
15489
  });
15490
+ var threadSteeringInspectParamsSchema = external_exports.object({
15491
+ threadId: hostThreadIdSchema,
15492
+ /** The text about to be steered; a Harness command always stops and restarts. */
15493
+ text: external_exports.string().optional()
15494
+ }).strict();
15495
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15496
+ var threadSteeringInspectResultSchema = external_exports.object({
15497
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15498
+ }).strict();
15466
15499
 
15467
15500
  // ../shared-contracts/dist/harness-plugins.js
15468
15501
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15584,6 +15617,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15584
15617
  latestVersion: external_exports.string().min(1).max(128),
15585
15618
  updateAvailable: external_exports.boolean(),
15586
15619
  canUpdate: external_exports.boolean(),
15620
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15621
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15622
+ /** Official download opened by the user; does not imply an automatic installation. */
15623
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15587
15624
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15588
15625
  message: external_exports.string().max(2048).optional(),
15589
15626
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15591,6 +15628,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
15591
15628
  notice: harnessLocalizedTextSchema.optional(),
15592
15629
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15593
15630
  }).strict();
15631
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15632
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15633
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15634
+ external_exports.object({
15635
+ taskId: external_exports.string().uuid(),
15636
+ status: external_exports.literal("succeeded"),
15637
+ result: harnessInstallationStateSchema
15638
+ }).strict(),
15639
+ external_exports.object({
15640
+ taskId: external_exports.string().uuid(),
15641
+ status: external_exports.literal("failed"),
15642
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15643
+ }).strict()
15644
+ ]);
15594
15645
 
15595
15646
  // ../shared-contracts/dist/codex-accounts.js
15596
15647
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -14931,10 +14931,19 @@ var model = external_exports.string().min(1).max(512);
14931
14931
  var project = external_exports.string().min(1).max(4096);
14932
14932
  var usageStatisticsParamsSchema = external_exports.strictObject({
14933
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(),
14934
14943
  harness: harness.optional(),
14935
14944
  model: model.nullable().optional(),
14936
14945
  project: project.nullable().optional(),
14937
- /** One local date inside the range. */
14946
+ /** One date in the query timezone inside the range. */
14938
14947
  date: localDate.optional()
14939
14948
  });
14940
14949
  var usageStatisticsTotalsSchema = external_exports.strictObject({
@@ -14970,7 +14979,7 @@ var usageStatisticsSessionSchema = external_exports.strictObject({
14970
14979
  });
14971
14980
  var usageStatisticsResultSchema = external_exports.strictObject({
14972
14981
  range: external_exports.enum(USAGE_STATISTICS_RANGES),
14973
- /** 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. */
14974
14983
  from: localDate.nullable(),
14975
14984
  to: localDate,
14976
14985
  /** The filters these figures apply, echoed so a late answer to older filters is recognised. */
@@ -15010,7 +15019,7 @@ var usageStatisticsResultSchema = external_exports.strictObject({
15010
15019
  totals: usageStatisticsTotalsSchema,
15011
15020
  /** Each date and Harness of the range: every filter except the day. */
15012
15021
  daily: external_exports.array(external_exports.strictObject({ date: localDate, harness, ...totals })).max(2e5),
15013
- /** Local weekday (0 = Sunday) and hour, all filters applied. */
15022
+ /** Weekday (0 = Sunday) and hour in the query timezone, all filters applied. */
15014
15023
  hourly: external_exports.array(external_exports.strictObject({
15015
15024
  weekday: external_exports.number().int().min(0).max(6),
15016
15025
  hour: external_exports.number().int().min(0).max(23),
@@ -15101,6 +15110,8 @@ var CONSOLE_HOST_METHODS = Object.freeze([
15101
15110
  "codexhost/harness/display-settings/set",
15102
15111
  "codexhost/harness/inspect",
15103
15112
  "codexhost/harness/installation",
15113
+ "codexhost/harness/installation/start",
15114
+ "codexhost/harness/installation/status",
15104
15115
  "codexhost/harness/launch-settings/get",
15105
15116
  "codexhost/harness/launch-settings/set",
15106
15117
  "codexhost/harness/grok-computer-use/get",
@@ -15178,7 +15189,18 @@ var threadManualCompactionStartedSchema = external_exports.strictObject({
15178
15189
  var nonNegativeSafeIntegerSchema = external_exports.number().int().safe().nonnegative();
15179
15190
  var finiteNonNegativeNumberSchema = external_exports.number().finite().nonnegative();
15180
15191
  var cacheHitRatePercentSchema = external_exports.number().finite().min(0).max(100);
15192
+ var indicatorTextSchema = (maximum) => harnessLocalizedTextSchema.refine((entries) => Object.values(entries).every((text) => text.length <= maximum));
15193
+ var composerIndicatorsSchema = external_exports.array(external_exports.object({
15194
+ kind: external_exports.literal("countdown"),
15195
+ id: external_exports.string().min(1).max(64),
15196
+ expiresAtUnix: nonNegativeSafeIntegerSchema,
15197
+ label: indicatorTextSchema(256).optional(),
15198
+ tooltip: indicatorTextSchema(1024).optional()
15199
+ }).strict()).max(2).refine((entries) => new Set(entries.map(({ id }) => id)).size === entries.length, {
15200
+ message: "Composer indicator IDs must be unique"
15201
+ });
15181
15202
  var threadUsageSnapshotSchema = external_exports.object({
15203
+ composerIndicators: composerIndicatorsSchema.optional(),
15182
15204
  inputTokens: nonNegativeSafeIntegerSchema.optional(),
15183
15205
  cachedInputTokens: nonNegativeSafeIntegerSchema.optional(),
15184
15206
  cacheWriteInputTokens: nonNegativeSafeIntegerSchema.optional(),
@@ -15586,7 +15608,9 @@ var harnessSessionCapabilitiesSchema = external_exports.object({
15586
15608
  }).strict().optional(),
15587
15609
  autonomousTurns: external_exports.object({
15588
15610
  observe: external_exports.boolean()
15589
- }).strict().optional()
15611
+ }).strict().optional(),
15612
+ /** True only when `turn.steer` delivers input into the active Turn through a native primitive. */
15613
+ steer: external_exports.boolean().optional()
15590
15614
  }).strict();
15591
15615
  var harnessConfigurationStateSchema = external_exports.object({
15592
15616
  effectiveModel: harnessModelRefSchema.optional(),
@@ -15718,6 +15742,15 @@ var threadOwnershipListResultSchema = external_exports.object({
15718
15742
  seen.add(thread.threadId);
15719
15743
  }
15720
15744
  });
15745
+ var threadSteeringInspectParamsSchema = external_exports.object({
15746
+ threadId: hostThreadIdSchema,
15747
+ /** The text about to be steered; a Harness command always stops and restarts. */
15748
+ text: external_exports.string().optional()
15749
+ }).strict();
15750
+ var threadSteerDeliverySchema = external_exports.enum(["activeTurn", "newTurn"]);
15751
+ var threadSteeringInspectResultSchema = external_exports.object({
15752
+ delivery: external_exports.enum(["official", "activeTurn", "newTurn"])
15753
+ }).strict();
15721
15754
 
15722
15755
  // packages/shared-contracts/dist/harness-plugins.js
15723
15756
  var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
@@ -15839,6 +15872,10 @@ var harnessInstallationStateSchema = external_exports.object({
15839
15872
  latestVersion: external_exports.string().min(1).max(128),
15840
15873
  updateAvailable: external_exports.boolean(),
15841
15874
  canUpdate: external_exports.boolean(),
15875
+ /** Defaults to CLI; some Harnesses ship only inside a desktop application. */
15876
+ versionKind: external_exports.enum(["cli", "application"]).optional(),
15877
+ /** Official download opened by the user; does not imply an automatic installation. */
15878
+ manualUpdateUrl: external_exports.url().max(2048).refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Manual updates require a credential-free HTTPS URL").optional(),
15842
15879
  // Adapter-owned diagnostic text; UI uses messageCode rather than displaying it verbatim.
15843
15880
  message: external_exports.string().max(2048).optional(),
15844
15881
  messageCode: external_exports.string().min(1).max(128).optional(),
@@ -15846,6 +15883,20 @@ var harnessInstallationStateSchema = external_exports.object({
15846
15883
  notice: harnessLocalizedTextSchema.optional(),
15847
15884
  latestVersionKind: external_exports.enum(["unknown", "tracking-branch"]).optional()
15848
15885
  }).strict();
15886
+ var harnessInstallationTaskParamsSchema = external_exports.object({ taskId: external_exports.string().uuid() }).strict();
15887
+ var harnessInstallationTaskSchema = external_exports.discriminatedUnion("status", [
15888
+ external_exports.object({ taskId: external_exports.string().uuid(), status: external_exports.literal("running") }).strict(),
15889
+ external_exports.object({
15890
+ taskId: external_exports.string().uuid(),
15891
+ status: external_exports.literal("succeeded"),
15892
+ result: harnessInstallationStateSchema
15893
+ }).strict(),
15894
+ external_exports.object({
15895
+ taskId: external_exports.string().uuid(),
15896
+ status: external_exports.literal("failed"),
15897
+ error: external_exports.object({ code: external_exports.number().int(), message: external_exports.string().min(1).max(2048) }).strict()
15898
+ }).strict()
15899
+ ]);
15849
15900
 
15850
15901
  // packages/shared-contracts/dist/codex-accounts.js
15851
15902
  var accountIdSchema = external_exports.string().min(1).max(256).regex(/^[A-Za-z0-9._~-]+$/u);
@@ -17335,9 +17386,13 @@ function requestManagerFromHookState(value, hostId2) {
17335
17386
  if (!record2(value)) return null;
17336
17387
  const direct = manager(value) ?? manager(value.manager);
17337
17388
  if (direct) return direct;
17338
- if (!hostId2 || typeof value.addManager !== "function" || typeof value.getForHostId !== "function" || typeof value.waitForManagerForHostId !== "function")
17389
+ if (!hostId2 || typeof value.addManager !== "function" || typeof value.getForHostId !== "function")
17339
17390
  return null;
17340
- return manager(value.getForHostId(hostId2));
17391
+ try {
17392
+ return manager(value.getForHostId(hostId2));
17393
+ } catch {
17394
+ return null;
17395
+ }
17341
17396
  }
17342
17397
  function discoverRendererHosts(root, ancestors = committedReactAncestors, managerFrom = requestManagerFromHookState) {
17343
17398
  const editors = [
@@ -17372,7 +17427,7 @@ function discoverRendererHosts(root, ancestors = committedReactAncestors, manage
17372
17427
  const value = hook.memoizedState;
17373
17428
  const manager = managerFrom(value);
17374
17429
  if (manager) managers.add(manager);
17375
- 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") {
17430
+ if (value && typeof value === "object" && "addManager" in value && typeof value.addManager === "function" && "getForHostId" in value && typeof value.getForHostId === "function") {
17376
17431
  registries.add(value);
17377
17432
  }
17378
17433
  hook = hook.next && typeof hook.next === "object" ? hook.next : null;
@@ -17387,7 +17442,13 @@ function discoverRendererHosts(root, ancestors = committedReactAncestors, manage
17387
17442
  }
17388
17443
  function resolveRendererHostManager(discovery, hostId2, managerFrom = requestManagerFromHookState) {
17389
17444
  if (!hostId2) return null;
17390
- const candidates = discovery.registries.length ? discovery.registries.map((registry2) => managerFrom(registry2.getForHostId(hostId2))) : discovery.managers;
17445
+ const candidates = discovery.registries.length ? discovery.registries.flatMap((registry2) => {
17446
+ try {
17447
+ return [managerFrom(registry2.getForHostId(hostId2))];
17448
+ } catch {
17449
+ return [];
17450
+ }
17451
+ }) : discovery.managers;
17391
17452
  const matching = new Set(
17392
17453
  candidates.filter(
17393
17454
  (manager) => manager && (manager.getHostId?.() ?? manager.requestClient.hostId) === hostId2 && (manager.requestClient.hostId === void 0 || manager.requestClient.hostId === hostId2)