@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
@@ -15103,7 +15103,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15103
15103
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15104
15104
  message: "Value must not be empty or whitespace"
15105
15105
  });
15106
- 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();
15106
+ 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();
15107
15107
  var harnessPermissionModeSchema = external_exports.object({
15108
15108
  id: harnessPermissionModeIdSchema,
15109
15109
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15487,7 +15487,12 @@ var threadInspectionParamsSchema = external_exports.object({
15487
15487
  }).strict();
15488
15488
  var codexThreadInspectionSchema = external_exports.object({
15489
15489
  owner: external_exports.literal("codex"),
15490
- locked: external_exports.literal(true),
15490
+ locked: external_exports.boolean(),
15491
+ effectiveModel: harnessModelRefSchema.optional(),
15492
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15493
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15494
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15495
+ history: harnessHistoryCapabilitiesSchema.optional(),
15491
15496
  supportsThreadReferences: external_exports.literal(true).optional()
15492
15497
  }).strict();
15493
15498
  var externalThreadInspectionSchema = external_exports.object({
@@ -15709,7 +15714,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15709
15714
  thread: external_exports.object({
15710
15715
  id: external_exports.string().min(1),
15711
15716
  cwd: external_exports.string(),
15712
- modelProvider: external_exports.literal("codexhost"),
15717
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15718
+ modelProvider: external_exports.string().min(1),
15713
15719
  createdAt: external_exports.number(),
15714
15720
  updatedAt: external_exports.number(),
15715
15721
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15723,6 +15729,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15723
15729
  nextCursor: external_exports.string().nullable()
15724
15730
  }),
15725
15731
  configuration: external_exports.object({
15732
+ /** Native Codex model names are not external Harness transport refs. */
15733
+ native: external_exports.object({
15734
+ model: external_exports.string().min(1).max(1024).optional(),
15735
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15736
+ }).optional(),
15726
15737
  effectiveModel: harnessModelRefSchema.optional(),
15727
15738
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15728
15739
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15749,6 +15760,21 @@ var clientChannelResponseSchema = external_exports.object({
15749
15760
  result: record2
15750
15761
  });
15751
15762
 
15763
+ // ../../shared-contracts/dist/thread-catalog.js
15764
+ var threadCatalogReadParamsSchema = external_exports.object({
15765
+ includeArchived: external_exports.boolean().optional(),
15766
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15767
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15768
+ }).strict();
15769
+ var threadCatalogReadResultSchema = external_exports.object({
15770
+ threads: external_exports.array(jsonObjectSchema),
15771
+ ownership: external_exports.array(threadOwnershipSchema),
15772
+ /** Known archived IDs, including visible local external records even when their rows are
15773
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15774
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15775
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15776
+ }).strict();
15777
+
15752
15778
  // ../../shared-contracts/dist/voice.js
15753
15779
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15754
15780
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15961,96 +15987,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15961
15987
  });
15962
15988
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15963
15989
  enabled: false,
15964
- timeoutMinutes: 30
15965
- });
15966
-
15967
- // ../../shared-contracts/dist/harness-plugins.js
15968
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15969
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15970
- var HARNESS_PLUGIN_LIMIT = 128;
15971
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15972
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15973
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15974
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15975
- 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");
15976
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15977
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15978
- var harnessInstallationGuideSchema = external_exports.object({
15979
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15980
- before: localizedTextSchema.optional(),
15981
- after: localizedTextSchema.optional(),
15982
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15983
- }).strict();
15984
- var pluginPresentationShape = {
15985
- id: installedHarnessPluginIdSchema,
15986
- name: external_exports.string().trim().min(1).max(128),
15987
- version: external_exports.string().min(1).max(128),
15988
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15989
- kind: external_exports.literal("usage").optional(),
15990
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15991
- iconStyle: external_exports.object({
15992
- vector: external_exports.object({
15993
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15994
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15995
- paths: external_exports.array(external_exports.object({
15996
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15997
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15998
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15999
- }).strict()).min(1).max(32)
16000
- }).strict().optional(),
16001
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16002
- borderRadius: external_exports.number().min(0).max(50).optional(),
16003
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16004
- }).strict().optional(),
16005
- installation: harnessInstallationGuideSchema.optional(),
16006
- notice: localizedTextSchema.optional(),
16007
- /** The factory accepts a persisted local entrypoint through its construction context. */
16008
- launchCommand: external_exports.literal(true).optional(),
16009
- links: external_exports.object({
16010
- website: documentationUrlSchema.optional(),
16011
- documentation: documentationUrlSchema.optional(),
16012
- installation: documentationUrlSchema.optional()
16013
- }).strict().optional()
16014
- };
16015
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16016
- message: "Plugin surfaces must be unique"
16017
- });
16018
- var harnessPluginManifestSchema = external_exports.object({
16019
- manifestVersion: external_exports.literal(1),
16020
- ...pluginPresentationShape,
16021
- adapterApiVersion: external_exports.number().int().positive(),
16022
- entry: relativeResourceSchema,
16023
- icon: relativeResourceSchema.optional(),
16024
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16025
- surfaces: harnessPluginSurfacesSchema.optional()
16026
- }).strict();
16027
- 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);
16028
- var harnessPluginDescriptorSchema = external_exports.object({
16029
- ...pluginPresentationShape,
16030
- icon: harnessPluginIconSchema.optional()
16031
- }).strict();
16032
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16033
- var harnessPluginListResultSchema = external_exports.object({
16034
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16035
- }).strict();
16036
- var harnessPluginConfigurationSchema = external_exports.object({
16037
- version: external_exports.literal(1),
16038
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16039
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16040
- message: "Enabled plugin IDs must be unique",
16041
- path: ["enabled"]
15990
+ timeoutMinutes: 10
16042
15991
  });
16043
15992
 
16044
15993
  // ../../shared-contracts/dist/harness-preferences.js
16045
15994
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16046
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15995
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16047
15996
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16048
15997
  model: harnessModelRefSchema.optional(),
16049
15998
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16050
15999
  permissionModeId: harnessPermissionModeIdSchema.optional()
16051
16000
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16052
16001
  var newThreadDefaultsSchema = external_exports.strictObject({
16053
- lastHarness: installedHarnessPluginIdSchema.optional(),
16002
+ lastHarness: harnessIdSchema.optional(),
16054
16003
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16055
16004
  });
16056
16005
  var modelId = external_exports.string().min(1).max(1024);
@@ -16071,19 +16020,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16071
16020
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16072
16021
  external_exports.strictObject({
16073
16022
  kind: external_exports.literal("favorite"),
16074
- harnessId: installedHarnessPluginIdSchema,
16023
+ harnessId: harnessIdSchema,
16075
16024
  modelId,
16076
16025
  enabled: external_exports.boolean()
16077
16026
  }),
16078
16027
  external_exports.strictObject({
16079
16028
  kind: external_exports.literal("favorites"),
16080
- harnessId: installedHarnessPluginIdSchema,
16029
+ harnessId: harnessIdSchema,
16081
16030
  modelIds: external_exports.array(modelId).max(2048)
16082
16031
  }),
16083
16032
  external_exports.strictObject({
16084
16033
  kind: external_exports.literal("newThread"),
16085
- lastHarness: installedHarnessPluginIdSchema.optional(),
16086
- harnessId: installedHarnessPluginIdSchema.optional(),
16034
+ lastHarness: harnessIdSchema.optional(),
16035
+ harnessId: harnessIdSchema.optional(),
16087
16036
  configuration: harnessDefaultConfigurationSchema.optional()
16088
16037
  })
16089
16038
  ]);
@@ -16099,12 +16048,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16099
16048
  code: "custom",
16100
16049
  message: "A default Harness or complete configuration is required"
16101
16050
  });
16102
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16103
- if (harnessId === "codex")
16104
- ctx.addIssue({
16105
- code: "custom",
16106
- message: "Official Codex is not an external Harness"
16107
- });
16108
16051
  }
16109
16052
  });
16110
16053
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16481,6 +16424,76 @@ var harnessAccountListResultSchema = external_exports.object({
16481
16424
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16482
16425
  }).strict();
16483
16426
 
16427
+ // ../../shared-contracts/dist/harness-plugins.js
16428
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16429
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16430
+ var HARNESS_PLUGIN_LIMIT = 128;
16431
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16432
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16433
+ 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");
16434
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16435
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16436
+ var harnessInstallationGuideSchema = external_exports.object({
16437
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16438
+ before: localizedTextSchema.optional(),
16439
+ after: localizedTextSchema.optional(),
16440
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16441
+ }).strict();
16442
+ var pluginPresentationShape = {
16443
+ id: installedHarnessPluginIdSchema,
16444
+ name: external_exports.string().trim().min(1).max(128),
16445
+ version: external_exports.string().min(1).max(128),
16446
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16447
+ kind: external_exports.literal("usage").optional(),
16448
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16449
+ iconStyle: external_exports.object({
16450
+ vector: external_exports.object({
16451
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16452
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16453
+ paths: external_exports.array(external_exports.object({
16454
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16455
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16456
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16457
+ }).strict()).min(1).max(32)
16458
+ }).strict().optional(),
16459
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16460
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16461
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16462
+ }).strict().optional(),
16463
+ installation: harnessInstallationGuideSchema.optional(),
16464
+ notice: localizedTextSchema.optional(),
16465
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16466
+ launchCommand: external_exports.literal(true).optional(),
16467
+ links: external_exports.object({
16468
+ website: documentationUrlSchema.optional(),
16469
+ documentation: documentationUrlSchema.optional(),
16470
+ installation: documentationUrlSchema.optional()
16471
+ }).strict().optional()
16472
+ };
16473
+ var harnessPluginManifestSchema = external_exports.object({
16474
+ manifestVersion: external_exports.literal(1),
16475
+ ...pluginPresentationShape,
16476
+ adapterApiVersion: external_exports.number().int().positive(),
16477
+ entry: relativeResourceSchema,
16478
+ icon: relativeResourceSchema.optional()
16479
+ }).strict();
16480
+ 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);
16481
+ var harnessPluginDescriptorSchema = external_exports.object({
16482
+ ...pluginPresentationShape,
16483
+ icon: harnessPluginIconSchema.optional()
16484
+ }).strict();
16485
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16486
+ var harnessPluginListResultSchema = external_exports.object({
16487
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16488
+ }).strict();
16489
+ var harnessPluginConfigurationSchema = external_exports.object({
16490
+ version: external_exports.literal(1),
16491
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16492
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16493
+ message: "Enabled plugin IDs must be unique",
16494
+ path: ["enabled"]
16495
+ });
16496
+
16484
16497
  // ../../shared-contracts/dist/harness-route.js
16485
16498
  var harnessPluginRouteSchema = external_exports.object({
16486
16499
  harnessId: harnessPluginIdSchema,
@@ -16674,6 +16687,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16674
16687
  }).strict();
16675
16688
  var harnessCommandCatalogSchema = external_exports.object({
16676
16689
  commands: external_exports.array(harnessCommandDescriptorSchema),
16690
+ /** Partial discovery failures; valid commands remain available. */
16691
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16677
16692
  /**
16678
16693
  * `live` when the catalog includes what a native Session reports for its
16679
16694
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16709,7 +16724,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16709
16724
  }).strict();
16710
16725
  var threadCommandExecuteResultSchema = external_exports.object({
16711
16726
  accepted: external_exports.literal(true),
16712
- turnId: hostTurnIdSchema
16727
+ turnId: hostTurnIdSchema.optional()
16713
16728
  }).strict();
16714
16729
 
16715
16730
  // ../../shared-contracts/dist/json-rpc.js
@@ -14962,7 +14962,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14962
14962
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14963
14963
  message: "Value must not be empty or whitespace"
14964
14964
  });
14965
- 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();
14965
+ 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();
14966
14966
  var harnessPermissionModeSchema = external_exports.object({
14967
14967
  id: harnessPermissionModeIdSchema,
14968
14968
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15346,7 +15346,12 @@ var threadInspectionParamsSchema = external_exports.object({
15346
15346
  }).strict();
15347
15347
  var codexThreadInspectionSchema = external_exports.object({
15348
15348
  owner: external_exports.literal("codex"),
15349
- locked: external_exports.literal(true),
15349
+ locked: external_exports.boolean(),
15350
+ effectiveModel: harnessModelRefSchema.optional(),
15351
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15352
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15353
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15354
+ history: harnessHistoryCapabilitiesSchema.optional(),
15350
15355
  supportsThreadReferences: external_exports.literal(true).optional()
15351
15356
  }).strict();
15352
15357
  var externalThreadInspectionSchema = external_exports.object({
@@ -15568,7 +15573,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15568
15573
  thread: external_exports.object({
15569
15574
  id: external_exports.string().min(1),
15570
15575
  cwd: external_exports.string(),
15571
- modelProvider: external_exports.literal("codexhost"),
15576
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15577
+ modelProvider: external_exports.string().min(1),
15572
15578
  createdAt: external_exports.number(),
15573
15579
  updatedAt: external_exports.number(),
15574
15580
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15582,6 +15588,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15582
15588
  nextCursor: external_exports.string().nullable()
15583
15589
  }),
15584
15590
  configuration: external_exports.object({
15591
+ /** Native Codex model names are not external Harness transport refs. */
15592
+ native: external_exports.object({
15593
+ model: external_exports.string().min(1).max(1024).optional(),
15594
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15595
+ }).optional(),
15585
15596
  effectiveModel: harnessModelRefSchema.optional(),
15586
15597
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15587
15598
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15608,6 +15619,21 @@ var clientChannelResponseSchema = external_exports.object({
15608
15619
  result: record2
15609
15620
  });
15610
15621
 
15622
+ // ../../shared-contracts/dist/thread-catalog.js
15623
+ var threadCatalogReadParamsSchema = external_exports.object({
15624
+ includeArchived: external_exports.boolean().optional(),
15625
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15626
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15627
+ }).strict();
15628
+ var threadCatalogReadResultSchema = external_exports.object({
15629
+ threads: external_exports.array(jsonObjectSchema),
15630
+ ownership: external_exports.array(threadOwnershipSchema),
15631
+ /** Known archived IDs, including visible local external records even when their rows are
15632
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15633
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15634
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15635
+ }).strict();
15636
+
15611
15637
  // ../../shared-contracts/dist/voice.js
15612
15638
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15613
15639
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15820,96 +15846,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15820
15846
  });
15821
15847
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15822
15848
  enabled: false,
15823
- timeoutMinutes: 30
15824
- });
15825
-
15826
- // ../../shared-contracts/dist/harness-plugins.js
15827
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15828
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15829
- var HARNESS_PLUGIN_LIMIT = 128;
15830
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15831
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15832
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15833
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15834
- 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");
15835
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15836
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15837
- var harnessInstallationGuideSchema = external_exports.object({
15838
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15839
- before: localizedTextSchema.optional(),
15840
- after: localizedTextSchema.optional(),
15841
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15842
- }).strict();
15843
- var pluginPresentationShape = {
15844
- id: installedHarnessPluginIdSchema,
15845
- name: external_exports.string().trim().min(1).max(128),
15846
- version: external_exports.string().min(1).max(128),
15847
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15848
- kind: external_exports.literal("usage").optional(),
15849
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15850
- iconStyle: external_exports.object({
15851
- vector: external_exports.object({
15852
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15853
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15854
- paths: external_exports.array(external_exports.object({
15855
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15856
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15857
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15858
- }).strict()).min(1).max(32)
15859
- }).strict().optional(),
15860
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15861
- borderRadius: external_exports.number().min(0).max(50).optional(),
15862
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15863
- }).strict().optional(),
15864
- installation: harnessInstallationGuideSchema.optional(),
15865
- notice: localizedTextSchema.optional(),
15866
- /** The factory accepts a persisted local entrypoint through its construction context. */
15867
- launchCommand: external_exports.literal(true).optional(),
15868
- links: external_exports.object({
15869
- website: documentationUrlSchema.optional(),
15870
- documentation: documentationUrlSchema.optional(),
15871
- installation: documentationUrlSchema.optional()
15872
- }).strict().optional()
15873
- };
15874
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15875
- message: "Plugin surfaces must be unique"
15876
- });
15877
- var harnessPluginManifestSchema = external_exports.object({
15878
- manifestVersion: external_exports.literal(1),
15879
- ...pluginPresentationShape,
15880
- adapterApiVersion: external_exports.number().int().positive(),
15881
- entry: relativeResourceSchema,
15882
- icon: relativeResourceSchema.optional(),
15883
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15884
- surfaces: harnessPluginSurfacesSchema.optional()
15885
- }).strict();
15886
- 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);
15887
- var harnessPluginDescriptorSchema = external_exports.object({
15888
- ...pluginPresentationShape,
15889
- icon: harnessPluginIconSchema.optional()
15890
- }).strict();
15891
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15892
- var harnessPluginListResultSchema = external_exports.object({
15893
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15894
- }).strict();
15895
- var harnessPluginConfigurationSchema = external_exports.object({
15896
- version: external_exports.literal(1),
15897
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15898
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15899
- message: "Enabled plugin IDs must be unique",
15900
- path: ["enabled"]
15849
+ timeoutMinutes: 10
15901
15850
  });
15902
15851
 
15903
15852
  // ../../shared-contracts/dist/harness-preferences.js
15904
15853
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15905
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15854
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15906
15855
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15907
15856
  model: harnessModelRefSchema.optional(),
15908
15857
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15909
15858
  permissionModeId: harnessPermissionModeIdSchema.optional()
15910
15859
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15911
15860
  var newThreadDefaultsSchema = external_exports.strictObject({
15912
- lastHarness: installedHarnessPluginIdSchema.optional(),
15861
+ lastHarness: harnessIdSchema.optional(),
15913
15862
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15914
15863
  });
15915
15864
  var modelId = external_exports.string().min(1).max(1024);
@@ -15930,19 +15879,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15930
15879
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15931
15880
  external_exports.strictObject({
15932
15881
  kind: external_exports.literal("favorite"),
15933
- harnessId: installedHarnessPluginIdSchema,
15882
+ harnessId: harnessIdSchema,
15934
15883
  modelId,
15935
15884
  enabled: external_exports.boolean()
15936
15885
  }),
15937
15886
  external_exports.strictObject({
15938
15887
  kind: external_exports.literal("favorites"),
15939
- harnessId: installedHarnessPluginIdSchema,
15888
+ harnessId: harnessIdSchema,
15940
15889
  modelIds: external_exports.array(modelId).max(2048)
15941
15890
  }),
15942
15891
  external_exports.strictObject({
15943
15892
  kind: external_exports.literal("newThread"),
15944
- lastHarness: installedHarnessPluginIdSchema.optional(),
15945
- harnessId: installedHarnessPluginIdSchema.optional(),
15893
+ lastHarness: harnessIdSchema.optional(),
15894
+ harnessId: harnessIdSchema.optional(),
15946
15895
  configuration: harnessDefaultConfigurationSchema.optional()
15947
15896
  })
15948
15897
  ]);
@@ -15958,12 +15907,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15958
15907
  code: "custom",
15959
15908
  message: "A default Harness or complete configuration is required"
15960
15909
  });
15961
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15962
- if (harnessId === "codex")
15963
- ctx.addIssue({
15964
- code: "custom",
15965
- message: "Official Codex is not an external Harness"
15966
- });
15967
15910
  }
15968
15911
  });
15969
15912
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16340,6 +16283,76 @@ var harnessAccountListResultSchema = external_exports.object({
16340
16283
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16341
16284
  }).strict();
16342
16285
 
16286
+ // ../../shared-contracts/dist/harness-plugins.js
16287
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16288
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16289
+ var HARNESS_PLUGIN_LIMIT = 128;
16290
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16291
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16292
+ 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");
16293
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16294
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16295
+ var harnessInstallationGuideSchema = external_exports.object({
16296
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16297
+ before: localizedTextSchema.optional(),
16298
+ after: localizedTextSchema.optional(),
16299
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16300
+ }).strict();
16301
+ var pluginPresentationShape = {
16302
+ id: installedHarnessPluginIdSchema,
16303
+ name: external_exports.string().trim().min(1).max(128),
16304
+ version: external_exports.string().min(1).max(128),
16305
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16306
+ kind: external_exports.literal("usage").optional(),
16307
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16308
+ iconStyle: external_exports.object({
16309
+ vector: external_exports.object({
16310
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16311
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16312
+ paths: external_exports.array(external_exports.object({
16313
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16314
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16315
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16316
+ }).strict()).min(1).max(32)
16317
+ }).strict().optional(),
16318
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16319
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16320
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16321
+ }).strict().optional(),
16322
+ installation: harnessInstallationGuideSchema.optional(),
16323
+ notice: localizedTextSchema.optional(),
16324
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16325
+ launchCommand: external_exports.literal(true).optional(),
16326
+ links: external_exports.object({
16327
+ website: documentationUrlSchema.optional(),
16328
+ documentation: documentationUrlSchema.optional(),
16329
+ installation: documentationUrlSchema.optional()
16330
+ }).strict().optional()
16331
+ };
16332
+ var harnessPluginManifestSchema = external_exports.object({
16333
+ manifestVersion: external_exports.literal(1),
16334
+ ...pluginPresentationShape,
16335
+ adapterApiVersion: external_exports.number().int().positive(),
16336
+ entry: relativeResourceSchema,
16337
+ icon: relativeResourceSchema.optional()
16338
+ }).strict();
16339
+ 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);
16340
+ var harnessPluginDescriptorSchema = external_exports.object({
16341
+ ...pluginPresentationShape,
16342
+ icon: harnessPluginIconSchema.optional()
16343
+ }).strict();
16344
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16345
+ var harnessPluginListResultSchema = external_exports.object({
16346
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16347
+ }).strict();
16348
+ var harnessPluginConfigurationSchema = external_exports.object({
16349
+ version: external_exports.literal(1),
16350
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16351
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16352
+ message: "Enabled plugin IDs must be unique",
16353
+ path: ["enabled"]
16354
+ });
16355
+
16343
16356
  // ../../shared-contracts/dist/harness-route.js
16344
16357
  var harnessPluginRouteSchema = external_exports.object({
16345
16358
  harnessId: harnessPluginIdSchema,
@@ -16533,6 +16546,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16533
16546
  }).strict();
16534
16547
  var harnessCommandCatalogSchema = external_exports.object({
16535
16548
  commands: external_exports.array(harnessCommandDescriptorSchema),
16549
+ /** Partial discovery failures; valid commands remain available. */
16550
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16536
16551
  /**
16537
16552
  * `live` when the catalog includes what a native Session reports for its
16538
16553
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16568,7 +16583,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16568
16583
  }).strict();
16569
16584
  var threadCommandExecuteResultSchema = external_exports.object({
16570
16585
  accepted: external_exports.literal(true),
16571
- turnId: hostTurnIdSchema
16586
+ turnId: hostTurnIdSchema.optional()
16572
16587
  }).strict();
16573
16588
 
16574
16589
  // ../../shared-contracts/dist/json-rpc.js