@codexhost/cli-darwin-arm64 0.18.0-beta.1 → 0.18.0-beta.4

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 (62) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +109 -94
  4. package/app/console-web.js +110 -95
  5. package/app/desktop-controller.mjs +109 -110
  6. package/app/host-runtime.mjs +14225 -10527
  7. package/app/plugins/antigravity/plugin.mjs +109 -94
  8. package/app/plugins/claude-code/plugin.mjs +229 -148
  9. package/app/plugins/codebuddy/plugin.mjs +109 -94
  10. package/app/plugins/codex-usage/plugin.mjs +109 -94
  11. package/app/plugins/copilot/plugin.mjs +109 -94
  12. package/app/plugins/cursor-cli/plugin.mjs +109 -94
  13. package/app/plugins/deepseek-harness/plugin.mjs +109 -94
  14. package/app/plugins/devin/plugin.mjs +109 -94
  15. package/app/plugins/enabled.json +0 -1
  16. package/app/plugins/grok/plugin.mjs +109 -94
  17. package/app/plugins/hermes/plugin.mjs +109 -94
  18. package/app/plugins/kimi-code/plugin.mjs +109 -94
  19. package/app/plugins/kiro-cli/plugin.mjs +109 -94
  20. package/app/plugins/omp/plugin.mjs +109 -94
  21. package/app/plugins/opencode/plugin.mjs +109 -94
  22. package/app/plugins/pi/plugin.mjs +109 -94
  23. package/app/plugins/qoder/plugin.mjs +109 -94
  24. package/app/plugins/qoder-cn/plugin.mjs +109 -94
  25. package/app/plugins/qwen-code/plugin.mjs +109 -94
  26. package/app/plugins/workbuddy/plugin.mjs +109 -94
  27. package/app/plugins/zcode/plugin.mjs +109 -94
  28. package/app/renderer-extension.js +128 -150
  29. package/app/web/assets/index-C3lniEH1.css +1 -0
  30. package/app/web/assets/index-D1dOzBMI.js +199 -0
  31. package/app/web/codexhost-settings.js +110 -95
  32. package/app/web/index.html +2 -2
  33. package/app/web/plugins/deepseek-ai__dsh-api-gateway/client.js +1 -1
  34. package/app/web/plugins/deepseek-ai__dsh-api-remotes/client.js +64 -64
  35. package/app/web/plugins/deepseek-ai__dsh-api-session-controller/client.js +69 -69
  36. package/app/web/plugins/deepseek-ai__dsh-client-connection/client.js +1 -1
  37. package/app/web/plugins/deepseek-ai__dsh-client-ui-chat/client.js +2 -2
  38. package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +57 -56
  39. package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +87 -87
  40. package/app/web/plugins/deepseek-ai__dsh-client-ui-directory-picker-browse/client.js +10 -10
  41. package/app/web/plugins/deepseek-ai__dsh-client-ui-input-trigger/client.js +1 -1
  42. package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +3 -3
  43. package/app/web/plugins/deepseek-ai__dsh-client-ui-model-selection/client.js +2 -2
  44. package/app/web/plugins/deepseek-ai__dsh-client-ui-permission-presets/client.js +1 -1
  45. package/app/web/plugins/deepseek-ai__dsh-client-ui-settings/client.js +1 -1
  46. package/app/web/plugins/deepseek-ai__dsh-client-ui-settings-general/client.js +2 -2
  47. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +2 -2
  48. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar-right/client.js +55 -55
  49. package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +18 -18
  50. package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -12
  51. package/app/web/plugins.json +4 -0
  52. package/app/web/sw.js +55 -24
  53. package/app/web-modules/server.mjs +1415 -784
  54. package/bin/codexhost +0 -0
  55. package/libexec/codexhost-shim +0 -0
  56. package/libexec/codexhost-updater +0 -0
  57. package/package.json +1 -1
  58. package/app/plugins/codex-cli/manifest.json +0 -16
  59. package/app/plugins/codex-cli/plugin.mjs +0 -20374
  60. package/app/web/assets/index-CIeTchMu.css +0 -1
  61. package/app/web/assets/index-DeAPBQbV.js +0 -199
  62. /package/app/{plugins/codex-cli/assets/icon.png → web/codex.png} +0 -0
@@ -18863,7 +18863,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
18863
18863
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
18864
18864
  message: "Value must not be empty or whitespace"
18865
18865
  });
18866
- var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
18866
+ var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
18867
18867
  var harnessPermissionModeSchema = external_exports.object({
18868
18868
  id: harnessPermissionModeIdSchema,
18869
18869
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -19247,7 +19247,12 @@ var threadInspectionParamsSchema = external_exports.object({
19247
19247
  }).strict();
19248
19248
  var codexThreadInspectionSchema = external_exports.object({
19249
19249
  owner: external_exports.literal("codex"),
19250
- locked: external_exports.literal(true),
19250
+ locked: external_exports.boolean(),
19251
+ effectiveModel: harnessModelRefSchema.optional(),
19252
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
19253
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19254
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
19255
+ history: harnessHistoryCapabilitiesSchema.optional(),
19251
19256
  supportsThreadReferences: external_exports.literal(true).optional()
19252
19257
  }).strict();
19253
19258
  var externalThreadInspectionSchema = external_exports.object({
@@ -19469,7 +19474,8 @@ var clientThreadSnapshotSchema = external_exports.object({
19469
19474
  thread: external_exports.object({
19470
19475
  id: external_exports.string().min(1),
19471
19476
  cwd: external_exports.string(),
19472
- modelProvider: external_exports.literal("codexhost"),
19477
+ /** External rows use codexhost; native Codex rows retain their official provider. */
19478
+ modelProvider: external_exports.string().min(1),
19473
19479
  createdAt: external_exports.number(),
19474
19480
  updatedAt: external_exports.number(),
19475
19481
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -19483,6 +19489,11 @@ var clientThreadSnapshotSchema = external_exports.object({
19483
19489
  nextCursor: external_exports.string().nullable()
19484
19490
  }),
19485
19491
  configuration: external_exports.object({
19492
+ /** Native Codex model names are not external Harness transport refs. */
19493
+ native: external_exports.object({
19494
+ model: external_exports.string().min(1).max(1024).optional(),
19495
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
19496
+ }).optional(),
19486
19497
  effectiveModel: harnessModelRefSchema.optional(),
19487
19498
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19488
19499
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -19509,6 +19520,21 @@ var clientChannelResponseSchema = external_exports.object({
19509
19520
  result: record2
19510
19521
  });
19511
19522
 
19523
+ // ../../shared-contracts/dist/thread-catalog.js
19524
+ var threadCatalogReadParamsSchema = external_exports.object({
19525
+ includeArchived: external_exports.boolean().optional(),
19526
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
19527
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
19528
+ }).strict();
19529
+ var threadCatalogReadResultSchema = external_exports.object({
19530
+ threads: external_exports.array(jsonObjectSchema),
19531
+ ownership: external_exports.array(threadOwnershipSchema),
19532
+ /** Known archived IDs, including visible local external records even when their rows are
19533
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
19534
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
19535
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
19536
+ }).strict();
19537
+
19512
19538
  // ../../shared-contracts/dist/voice.js
19513
19539
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
19514
19540
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -19721,96 +19747,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
19721
19747
  });
19722
19748
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
19723
19749
  enabled: false,
19724
- timeoutMinutes: 30
19725
- });
19726
-
19727
- // ../../shared-contracts/dist/harness-plugins.js
19728
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19729
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
19730
- var HARNESS_PLUGIN_LIMIT = 128;
19731
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
19732
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
19733
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
19734
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
19735
- var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
19736
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
19737
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
19738
- var harnessInstallationGuideSchema = external_exports.object({
19739
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
19740
- before: localizedTextSchema.optional(),
19741
- after: localizedTextSchema.optional(),
19742
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
19743
- }).strict();
19744
- var pluginPresentationShape = {
19745
- id: installedHarnessPluginIdSchema,
19746
- name: external_exports.string().trim().min(1).max(128),
19747
- version: external_exports.string().min(1).max(128),
19748
- /** Capability-only plugin; omitted for existing session-capable plugins. */
19749
- kind: external_exports.literal("usage").optional(),
19750
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
19751
- iconStyle: external_exports.object({
19752
- vector: external_exports.object({
19753
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
19754
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
19755
- paths: external_exports.array(external_exports.object({
19756
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
19757
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
19758
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
19759
- }).strict()).min(1).max(32)
19760
- }).strict().optional(),
19761
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
19762
- borderRadius: external_exports.number().min(0).max(50).optional(),
19763
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
19764
- }).strict().optional(),
19765
- installation: harnessInstallationGuideSchema.optional(),
19766
- notice: localizedTextSchema.optional(),
19767
- /** The factory accepts a persisted local entrypoint through its construction context. */
19768
- launchCommand: external_exports.literal(true).optional(),
19769
- links: external_exports.object({
19770
- website: documentationUrlSchema.optional(),
19771
- documentation: documentationUrlSchema.optional(),
19772
- installation: documentationUrlSchema.optional()
19773
- }).strict().optional()
19774
- };
19775
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
19776
- message: "Plugin surfaces must be unique"
19777
- });
19778
- var harnessPluginManifestSchema = external_exports.object({
19779
- manifestVersion: external_exports.literal(1),
19780
- ...pluginPresentationShape,
19781
- adapterApiVersion: external_exports.number().int().positive(),
19782
- entry: relativeResourceSchema,
19783
- icon: relativeResourceSchema.optional(),
19784
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
19785
- surfaces: harnessPluginSurfacesSchema.optional()
19786
- }).strict();
19787
- var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
19788
- var harnessPluginDescriptorSchema = external_exports.object({
19789
- ...pluginPresentationShape,
19790
- icon: harnessPluginIconSchema.optional()
19791
- }).strict();
19792
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
19793
- var harnessPluginListResultSchema = external_exports.object({
19794
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
19795
- }).strict();
19796
- var harnessPluginConfigurationSchema = external_exports.object({
19797
- version: external_exports.literal(1),
19798
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
19799
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
19800
- message: "Enabled plugin IDs must be unique",
19801
- path: ["enabled"]
19750
+ timeoutMinutes: 10
19802
19751
  });
19803
19752
 
19804
19753
  // ../../shared-contracts/dist/harness-preferences.js
19805
19754
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
19806
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
19755
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
19807
19756
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
19808
19757
  model: harnessModelRefSchema.optional(),
19809
19758
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19810
19759
  permissionModeId: harnessPermissionModeIdSchema.optional()
19811
19760
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
19812
19761
  var newThreadDefaultsSchema = external_exports.strictObject({
19813
- lastHarness: installedHarnessPluginIdSchema.optional(),
19762
+ lastHarness: harnessIdSchema.optional(),
19814
19763
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
19815
19764
  });
19816
19765
  var modelId = external_exports.string().min(1).max(1024);
@@ -19831,19 +19780,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
19831
19780
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
19832
19781
  external_exports.strictObject({
19833
19782
  kind: external_exports.literal("favorite"),
19834
- harnessId: installedHarnessPluginIdSchema,
19783
+ harnessId: harnessIdSchema,
19835
19784
  modelId,
19836
19785
  enabled: external_exports.boolean()
19837
19786
  }),
19838
19787
  external_exports.strictObject({
19839
19788
  kind: external_exports.literal("favorites"),
19840
- harnessId: installedHarnessPluginIdSchema,
19789
+ harnessId: harnessIdSchema,
19841
19790
  modelIds: external_exports.array(modelId).max(2048)
19842
19791
  }),
19843
19792
  external_exports.strictObject({
19844
19793
  kind: external_exports.literal("newThread"),
19845
- lastHarness: installedHarnessPluginIdSchema.optional(),
19846
- harnessId: installedHarnessPluginIdSchema.optional(),
19794
+ lastHarness: harnessIdSchema.optional(),
19795
+ harnessId: harnessIdSchema.optional(),
19847
19796
  configuration: harnessDefaultConfigurationSchema.optional()
19848
19797
  })
19849
19798
  ]);
@@ -19859,12 +19808,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
19859
19808
  code: "custom",
19860
19809
  message: "A default Harness or complete configuration is required"
19861
19810
  });
19862
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
19863
- if (harnessId === "codex")
19864
- ctx.addIssue({
19865
- code: "custom",
19866
- message: "Official Codex is not an external Harness"
19867
- });
19868
19811
  }
19869
19812
  });
19870
19813
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -20241,6 +20184,76 @@ var harnessAccountListResultSchema = external_exports.object({
20241
20184
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
20242
20185
  }).strict();
20243
20186
 
20187
+ // ../../shared-contracts/dist/harness-plugins.js
20188
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
20189
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
20190
+ var HARNESS_PLUGIN_LIMIT = 128;
20191
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
20192
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
20193
+ var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
20194
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
20195
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
20196
+ var harnessInstallationGuideSchema = external_exports.object({
20197
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
20198
+ before: localizedTextSchema.optional(),
20199
+ after: localizedTextSchema.optional(),
20200
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
20201
+ }).strict();
20202
+ var pluginPresentationShape = {
20203
+ id: installedHarnessPluginIdSchema,
20204
+ name: external_exports.string().trim().min(1).max(128),
20205
+ version: external_exports.string().min(1).max(128),
20206
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
20207
+ kind: external_exports.literal("usage").optional(),
20208
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
20209
+ iconStyle: external_exports.object({
20210
+ vector: external_exports.object({
20211
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
20212
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
20213
+ paths: external_exports.array(external_exports.object({
20214
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
20215
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
20216
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
20217
+ }).strict()).min(1).max(32)
20218
+ }).strict().optional(),
20219
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
20220
+ borderRadius: external_exports.number().min(0).max(50).optional(),
20221
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
20222
+ }).strict().optional(),
20223
+ installation: harnessInstallationGuideSchema.optional(),
20224
+ notice: localizedTextSchema.optional(),
20225
+ /** The factory accepts a persisted local entrypoint through its construction context. */
20226
+ launchCommand: external_exports.literal(true).optional(),
20227
+ links: external_exports.object({
20228
+ website: documentationUrlSchema.optional(),
20229
+ documentation: documentationUrlSchema.optional(),
20230
+ installation: documentationUrlSchema.optional()
20231
+ }).strict().optional()
20232
+ };
20233
+ var harnessPluginManifestSchema = external_exports.object({
20234
+ manifestVersion: external_exports.literal(1),
20235
+ ...pluginPresentationShape,
20236
+ adapterApiVersion: external_exports.number().int().positive(),
20237
+ entry: relativeResourceSchema,
20238
+ icon: relativeResourceSchema.optional()
20239
+ }).strict();
20240
+ var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
20241
+ var harnessPluginDescriptorSchema = external_exports.object({
20242
+ ...pluginPresentationShape,
20243
+ icon: harnessPluginIconSchema.optional()
20244
+ }).strict();
20245
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
20246
+ var harnessPluginListResultSchema = external_exports.object({
20247
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
20248
+ }).strict();
20249
+ var harnessPluginConfigurationSchema = external_exports.object({
20250
+ version: external_exports.literal(1),
20251
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
20252
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
20253
+ message: "Enabled plugin IDs must be unique",
20254
+ path: ["enabled"]
20255
+ });
20256
+
20244
20257
  // ../../shared-contracts/dist/harness-route.js
20245
20258
  var harnessPluginRouteSchema = external_exports.object({
20246
20259
  harnessId: harnessPluginIdSchema,
@@ -20438,6 +20451,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
20438
20451
  }).strict();
20439
20452
  var harnessCommandCatalogSchema = external_exports.object({
20440
20453
  commands: external_exports.array(harnessCommandDescriptorSchema),
20454
+ /** Partial discovery failures; valid commands remain available. */
20455
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
20441
20456
  /**
20442
20457
  * `live` when the catalog includes what a native Session reports for its
20443
20458
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -20473,7 +20488,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
20473
20488
  }).strict();
20474
20489
  var threadCommandExecuteResultSchema = external_exports.object({
20475
20490
  accepted: external_exports.literal(true),
20476
- turnId: hostTurnIdSchema
20491
+ turnId: hostTurnIdSchema.optional()
20477
20492
  }).strict();
20478
20493
 
20479
20494
  // ../../shared-contracts/dist/json-rpc.js
@@ -14620,7 +14620,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14620
14620
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14621
14621
  message: "Value must not be empty or whitespace"
14622
14622
  });
14623
- var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14623
+ var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14624
14624
  var harnessPermissionModeSchema = external_exports.object({
14625
14625
  id: harnessPermissionModeIdSchema,
14626
14626
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15004,7 +15004,12 @@ var threadInspectionParamsSchema = external_exports.object({
15004
15004
  }).strict();
15005
15005
  var codexThreadInspectionSchema = external_exports.object({
15006
15006
  owner: external_exports.literal("codex"),
15007
- locked: external_exports.literal(true),
15007
+ locked: external_exports.boolean(),
15008
+ effectiveModel: harnessModelRefSchema.optional(),
15009
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15010
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15011
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15012
+ history: harnessHistoryCapabilitiesSchema.optional(),
15008
15013
  supportsThreadReferences: external_exports.literal(true).optional()
15009
15014
  }).strict();
15010
15015
  var externalThreadInspectionSchema = external_exports.object({
@@ -15226,7 +15231,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15226
15231
  thread: external_exports.object({
15227
15232
  id: external_exports.string().min(1),
15228
15233
  cwd: external_exports.string(),
15229
- modelProvider: external_exports.literal("codexhost"),
15234
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15235
+ modelProvider: external_exports.string().min(1),
15230
15236
  createdAt: external_exports.number(),
15231
15237
  updatedAt: external_exports.number(),
15232
15238
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15240,6 +15246,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15240
15246
  nextCursor: external_exports.string().nullable()
15241
15247
  }),
15242
15248
  configuration: external_exports.object({
15249
+ /** Native Codex model names are not external Harness transport refs. */
15250
+ native: external_exports.object({
15251
+ model: external_exports.string().min(1).max(1024).optional(),
15252
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15253
+ }).optional(),
15243
15254
  effectiveModel: harnessModelRefSchema.optional(),
15244
15255
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15245
15256
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15266,6 +15277,21 @@ var clientChannelResponseSchema = external_exports.object({
15266
15277
  result: record2
15267
15278
  });
15268
15279
 
15280
+ // ../../shared-contracts/dist/thread-catalog.js
15281
+ var threadCatalogReadParamsSchema = external_exports.object({
15282
+ includeArchived: external_exports.boolean().optional(),
15283
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15284
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15285
+ }).strict();
15286
+ var threadCatalogReadResultSchema = external_exports.object({
15287
+ threads: external_exports.array(jsonObjectSchema),
15288
+ ownership: external_exports.array(threadOwnershipSchema),
15289
+ /** Known archived IDs, including visible local external records even when their rows are
15290
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15291
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15292
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15293
+ }).strict();
15294
+
15269
15295
  // ../../shared-contracts/dist/voice.js
15270
15296
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15271
15297
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15478,96 +15504,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15478
15504
  });
15479
15505
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15480
15506
  enabled: false,
15481
- timeoutMinutes: 30
15482
- });
15483
-
15484
- // ../../shared-contracts/dist/harness-plugins.js
15485
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15486
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15487
- var HARNESS_PLUGIN_LIMIT = 128;
15488
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15489
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15490
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15491
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15492
- var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
15493
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15494
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15495
- var harnessInstallationGuideSchema = external_exports.object({
15496
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15497
- before: localizedTextSchema.optional(),
15498
- after: localizedTextSchema.optional(),
15499
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15500
- }).strict();
15501
- var pluginPresentationShape = {
15502
- id: installedHarnessPluginIdSchema,
15503
- name: external_exports.string().trim().min(1).max(128),
15504
- version: external_exports.string().min(1).max(128),
15505
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15506
- kind: external_exports.literal("usage").optional(),
15507
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15508
- iconStyle: external_exports.object({
15509
- vector: external_exports.object({
15510
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15511
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15512
- paths: external_exports.array(external_exports.object({
15513
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15514
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15515
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15516
- }).strict()).min(1).max(32)
15517
- }).strict().optional(),
15518
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15519
- borderRadius: external_exports.number().min(0).max(50).optional(),
15520
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15521
- }).strict().optional(),
15522
- installation: harnessInstallationGuideSchema.optional(),
15523
- notice: localizedTextSchema.optional(),
15524
- /** The factory accepts a persisted local entrypoint through its construction context. */
15525
- launchCommand: external_exports.literal(true).optional(),
15526
- links: external_exports.object({
15527
- website: documentationUrlSchema.optional(),
15528
- documentation: documentationUrlSchema.optional(),
15529
- installation: documentationUrlSchema.optional()
15530
- }).strict().optional()
15531
- };
15532
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15533
- message: "Plugin surfaces must be unique"
15534
- });
15535
- var harnessPluginManifestSchema = external_exports.object({
15536
- manifestVersion: external_exports.literal(1),
15537
- ...pluginPresentationShape,
15538
- adapterApiVersion: external_exports.number().int().positive(),
15539
- entry: relativeResourceSchema,
15540
- icon: relativeResourceSchema.optional(),
15541
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15542
- surfaces: harnessPluginSurfacesSchema.optional()
15543
- }).strict();
15544
- var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
15545
- var harnessPluginDescriptorSchema = external_exports.object({
15546
- ...pluginPresentationShape,
15547
- icon: harnessPluginIconSchema.optional()
15548
- }).strict();
15549
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15550
- var harnessPluginListResultSchema = external_exports.object({
15551
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15552
- }).strict();
15553
- var harnessPluginConfigurationSchema = external_exports.object({
15554
- version: external_exports.literal(1),
15555
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15556
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15557
- message: "Enabled plugin IDs must be unique",
15558
- path: ["enabled"]
15507
+ timeoutMinutes: 10
15559
15508
  });
15560
15509
 
15561
15510
  // ../../shared-contracts/dist/harness-preferences.js
15562
15511
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15563
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15512
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15564
15513
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15565
15514
  model: harnessModelRefSchema.optional(),
15566
15515
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15567
15516
  permissionModeId: harnessPermissionModeIdSchema.optional()
15568
15517
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15569
15518
  var newThreadDefaultsSchema = external_exports.strictObject({
15570
- lastHarness: installedHarnessPluginIdSchema.optional(),
15519
+ lastHarness: harnessIdSchema.optional(),
15571
15520
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15572
15521
  });
15573
15522
  var modelId = external_exports.string().min(1).max(1024);
@@ -15588,19 +15537,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15588
15537
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15589
15538
  external_exports.strictObject({
15590
15539
  kind: external_exports.literal("favorite"),
15591
- harnessId: installedHarnessPluginIdSchema,
15540
+ harnessId: harnessIdSchema,
15592
15541
  modelId,
15593
15542
  enabled: external_exports.boolean()
15594
15543
  }),
15595
15544
  external_exports.strictObject({
15596
15545
  kind: external_exports.literal("favorites"),
15597
- harnessId: installedHarnessPluginIdSchema,
15546
+ harnessId: harnessIdSchema,
15598
15547
  modelIds: external_exports.array(modelId).max(2048)
15599
15548
  }),
15600
15549
  external_exports.strictObject({
15601
15550
  kind: external_exports.literal("newThread"),
15602
- lastHarness: installedHarnessPluginIdSchema.optional(),
15603
- harnessId: installedHarnessPluginIdSchema.optional(),
15551
+ lastHarness: harnessIdSchema.optional(),
15552
+ harnessId: harnessIdSchema.optional(),
15604
15553
  configuration: harnessDefaultConfigurationSchema.optional()
15605
15554
  })
15606
15555
  ]);
@@ -15616,12 +15565,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15616
15565
  code: "custom",
15617
15566
  message: "A default Harness or complete configuration is required"
15618
15567
  });
15619
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15620
- if (harnessId === "codex")
15621
- ctx.addIssue({
15622
- code: "custom",
15623
- message: "Official Codex is not an external Harness"
15624
- });
15625
15568
  }
15626
15569
  });
15627
15570
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -15998,6 +15941,76 @@ var harnessAccountListResultSchema = external_exports.object({
15998
15941
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
15999
15942
  }).strict();
16000
15943
 
15944
+ // ../../shared-contracts/dist/harness-plugins.js
15945
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15946
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15947
+ var HARNESS_PLUGIN_LIMIT = 128;
15948
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15949
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15950
+ var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
15951
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15952
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15953
+ var harnessInstallationGuideSchema = external_exports.object({
15954
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15955
+ before: localizedTextSchema.optional(),
15956
+ after: localizedTextSchema.optional(),
15957
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15958
+ }).strict();
15959
+ var pluginPresentationShape = {
15960
+ id: installedHarnessPluginIdSchema,
15961
+ name: external_exports.string().trim().min(1).max(128),
15962
+ version: external_exports.string().min(1).max(128),
15963
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15964
+ kind: external_exports.literal("usage").optional(),
15965
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15966
+ iconStyle: external_exports.object({
15967
+ vector: external_exports.object({
15968
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15969
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15970
+ paths: external_exports.array(external_exports.object({
15971
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15972
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15973
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15974
+ }).strict()).min(1).max(32)
15975
+ }).strict().optional(),
15976
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15977
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15978
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15979
+ }).strict().optional(),
15980
+ installation: harnessInstallationGuideSchema.optional(),
15981
+ notice: localizedTextSchema.optional(),
15982
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15983
+ launchCommand: external_exports.literal(true).optional(),
15984
+ links: external_exports.object({
15985
+ website: documentationUrlSchema.optional(),
15986
+ documentation: documentationUrlSchema.optional(),
15987
+ installation: documentationUrlSchema.optional()
15988
+ }).strict().optional()
15989
+ };
15990
+ var harnessPluginManifestSchema = external_exports.object({
15991
+ manifestVersion: external_exports.literal(1),
15992
+ ...pluginPresentationShape,
15993
+ adapterApiVersion: external_exports.number().int().positive(),
15994
+ entry: relativeResourceSchema,
15995
+ icon: relativeResourceSchema.optional()
15996
+ }).strict();
15997
+ var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
15998
+ var harnessPluginDescriptorSchema = external_exports.object({
15999
+ ...pluginPresentationShape,
16000
+ icon: harnessPluginIconSchema.optional()
16001
+ }).strict();
16002
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16003
+ var harnessPluginListResultSchema = external_exports.object({
16004
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16005
+ }).strict();
16006
+ var harnessPluginConfigurationSchema = external_exports.object({
16007
+ version: external_exports.literal(1),
16008
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16009
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16010
+ message: "Enabled plugin IDs must be unique",
16011
+ path: ["enabled"]
16012
+ });
16013
+
16001
16014
  // ../../shared-contracts/dist/harness-route.js
16002
16015
  var harnessPluginRouteSchema = external_exports.object({
16003
16016
  harnessId: harnessPluginIdSchema,
@@ -16191,6 +16204,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16191
16204
  }).strict();
16192
16205
  var harnessCommandCatalogSchema = external_exports.object({
16193
16206
  commands: external_exports.array(harnessCommandDescriptorSchema),
16207
+ /** Partial discovery failures; valid commands remain available. */
16208
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16194
16209
  /**
16195
16210
  * `live` when the catalog includes what a native Session reports for its
16196
16211
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16226,7 +16241,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16226
16241
  }).strict();
16227
16242
  var threadCommandExecuteResultSchema = external_exports.object({
16228
16243
  accepted: external_exports.literal(true),
16229
- turnId: hostTurnIdSchema
16244
+ turnId: hostTurnIdSchema.optional()
16230
16245
  }).strict();
16231
16246
 
16232
16247
  // ../../shared-contracts/dist/json-rpc.js
@@ -19,7 +19,6 @@
19
19
  "qoder-cn",
20
20
  "kimi-code",
21
21
  "zcode",
22
- "codex-cli",
23
22
  "copilot",
24
23
  "codex-usage"
25
24
  ]