@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
@@ -15098,7 +15098,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15098
15098
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15099
15099
  message: "Value must not be empty or whitespace"
15100
15100
  });
15101
- 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();
15101
+ 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();
15102
15102
  var harnessPermissionModeSchema = external_exports.object({
15103
15103
  id: harnessPermissionModeIdSchema,
15104
15104
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15482,7 +15482,12 @@ var threadInspectionParamsSchema = external_exports.object({
15482
15482
  }).strict();
15483
15483
  var codexThreadInspectionSchema = external_exports.object({
15484
15484
  owner: external_exports.literal("codex"),
15485
- locked: external_exports.literal(true),
15485
+ locked: external_exports.boolean(),
15486
+ effectiveModel: harnessModelRefSchema.optional(),
15487
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15488
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15489
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15490
+ history: harnessHistoryCapabilitiesSchema.optional(),
15486
15491
  supportsThreadReferences: external_exports.literal(true).optional()
15487
15492
  }).strict();
15488
15493
  var externalThreadInspectionSchema = external_exports.object({
@@ -15704,7 +15709,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15704
15709
  thread: external_exports.object({
15705
15710
  id: external_exports.string().min(1),
15706
15711
  cwd: external_exports.string(),
15707
- modelProvider: external_exports.literal("codexhost"),
15712
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15713
+ modelProvider: external_exports.string().min(1),
15708
15714
  createdAt: external_exports.number(),
15709
15715
  updatedAt: external_exports.number(),
15710
15716
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15718,6 +15724,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15718
15724
  nextCursor: external_exports.string().nullable()
15719
15725
  }),
15720
15726
  configuration: external_exports.object({
15727
+ /** Native Codex model names are not external Harness transport refs. */
15728
+ native: external_exports.object({
15729
+ model: external_exports.string().min(1).max(1024).optional(),
15730
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15731
+ }).optional(),
15721
15732
  effectiveModel: harnessModelRefSchema.optional(),
15722
15733
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15723
15734
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15744,6 +15755,21 @@ var clientChannelResponseSchema = external_exports.object({
15744
15755
  result: record2
15745
15756
  });
15746
15757
 
15758
+ // ../../shared-contracts/dist/thread-catalog.js
15759
+ var threadCatalogReadParamsSchema = external_exports.object({
15760
+ includeArchived: external_exports.boolean().optional(),
15761
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15762
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15763
+ }).strict();
15764
+ var threadCatalogReadResultSchema = external_exports.object({
15765
+ threads: external_exports.array(jsonObjectSchema),
15766
+ ownership: external_exports.array(threadOwnershipSchema),
15767
+ /** Known archived IDs, including visible local external records even when their rows are
15768
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15769
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15770
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15771
+ }).strict();
15772
+
15747
15773
  // ../../shared-contracts/dist/voice.js
15748
15774
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15749
15775
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15956,96 +15982,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15956
15982
  });
15957
15983
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15958
15984
  enabled: false,
15959
- timeoutMinutes: 30
15960
- });
15961
-
15962
- // ../../shared-contracts/dist/harness-plugins.js
15963
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15964
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15965
- var HARNESS_PLUGIN_LIMIT = 128;
15966
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15967
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15968
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15969
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15970
- 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");
15971
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15972
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15973
- var harnessInstallationGuideSchema = external_exports.object({
15974
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15975
- before: localizedTextSchema.optional(),
15976
- after: localizedTextSchema.optional(),
15977
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15978
- }).strict();
15979
- var pluginPresentationShape = {
15980
- id: installedHarnessPluginIdSchema,
15981
- name: external_exports.string().trim().min(1).max(128),
15982
- version: external_exports.string().min(1).max(128),
15983
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15984
- kind: external_exports.literal("usage").optional(),
15985
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15986
- iconStyle: external_exports.object({
15987
- vector: external_exports.object({
15988
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15989
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15990
- paths: external_exports.array(external_exports.object({
15991
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15992
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15993
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15994
- }).strict()).min(1).max(32)
15995
- }).strict().optional(),
15996
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15997
- borderRadius: external_exports.number().min(0).max(50).optional(),
15998
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15999
- }).strict().optional(),
16000
- installation: harnessInstallationGuideSchema.optional(),
16001
- notice: localizedTextSchema.optional(),
16002
- /** The factory accepts a persisted local entrypoint through its construction context. */
16003
- launchCommand: external_exports.literal(true).optional(),
16004
- links: external_exports.object({
16005
- website: documentationUrlSchema.optional(),
16006
- documentation: documentationUrlSchema.optional(),
16007
- installation: documentationUrlSchema.optional()
16008
- }).strict().optional()
16009
- };
16010
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16011
- message: "Plugin surfaces must be unique"
16012
- });
16013
- var harnessPluginManifestSchema = external_exports.object({
16014
- manifestVersion: external_exports.literal(1),
16015
- ...pluginPresentationShape,
16016
- adapterApiVersion: external_exports.number().int().positive(),
16017
- entry: relativeResourceSchema,
16018
- icon: relativeResourceSchema.optional(),
16019
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16020
- surfaces: harnessPluginSurfacesSchema.optional()
16021
- }).strict();
16022
- 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);
16023
- var harnessPluginDescriptorSchema = external_exports.object({
16024
- ...pluginPresentationShape,
16025
- icon: harnessPluginIconSchema.optional()
16026
- }).strict();
16027
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16028
- var harnessPluginListResultSchema = external_exports.object({
16029
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16030
- }).strict();
16031
- var harnessPluginConfigurationSchema = external_exports.object({
16032
- version: external_exports.literal(1),
16033
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16034
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16035
- message: "Enabled plugin IDs must be unique",
16036
- path: ["enabled"]
15985
+ timeoutMinutes: 10
16037
15986
  });
16038
15987
 
16039
15988
  // ../../shared-contracts/dist/harness-preferences.js
16040
15989
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16041
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15990
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16042
15991
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16043
15992
  model: harnessModelRefSchema.optional(),
16044
15993
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16045
15994
  permissionModeId: harnessPermissionModeIdSchema.optional()
16046
15995
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16047
15996
  var newThreadDefaultsSchema = external_exports.strictObject({
16048
- lastHarness: installedHarnessPluginIdSchema.optional(),
15997
+ lastHarness: harnessIdSchema.optional(),
16049
15998
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16050
15999
  });
16051
16000
  var modelId = external_exports.string().min(1).max(1024);
@@ -16066,19 +16015,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16066
16015
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16067
16016
  external_exports.strictObject({
16068
16017
  kind: external_exports.literal("favorite"),
16069
- harnessId: installedHarnessPluginIdSchema,
16018
+ harnessId: harnessIdSchema,
16070
16019
  modelId,
16071
16020
  enabled: external_exports.boolean()
16072
16021
  }),
16073
16022
  external_exports.strictObject({
16074
16023
  kind: external_exports.literal("favorites"),
16075
- harnessId: installedHarnessPluginIdSchema,
16024
+ harnessId: harnessIdSchema,
16076
16025
  modelIds: external_exports.array(modelId).max(2048)
16077
16026
  }),
16078
16027
  external_exports.strictObject({
16079
16028
  kind: external_exports.literal("newThread"),
16080
- lastHarness: installedHarnessPluginIdSchema.optional(),
16081
- harnessId: installedHarnessPluginIdSchema.optional(),
16029
+ lastHarness: harnessIdSchema.optional(),
16030
+ harnessId: harnessIdSchema.optional(),
16082
16031
  configuration: harnessDefaultConfigurationSchema.optional()
16083
16032
  })
16084
16033
  ]);
@@ -16094,12 +16043,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16094
16043
  code: "custom",
16095
16044
  message: "A default Harness or complete configuration is required"
16096
16045
  });
16097
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16098
- if (harnessId === "codex")
16099
- ctx.addIssue({
16100
- code: "custom",
16101
- message: "Official Codex is not an external Harness"
16102
- });
16103
16046
  }
16104
16047
  });
16105
16048
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16476,6 +16419,76 @@ var harnessAccountListResultSchema = external_exports.object({
16476
16419
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16477
16420
  }).strict();
16478
16421
 
16422
+ // ../../shared-contracts/dist/harness-plugins.js
16423
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16424
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16425
+ var HARNESS_PLUGIN_LIMIT = 128;
16426
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16427
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16428
+ 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");
16429
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16430
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16431
+ var harnessInstallationGuideSchema = external_exports.object({
16432
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16433
+ before: localizedTextSchema.optional(),
16434
+ after: localizedTextSchema.optional(),
16435
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16436
+ }).strict();
16437
+ var pluginPresentationShape = {
16438
+ id: installedHarnessPluginIdSchema,
16439
+ name: external_exports.string().trim().min(1).max(128),
16440
+ version: external_exports.string().min(1).max(128),
16441
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16442
+ kind: external_exports.literal("usage").optional(),
16443
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16444
+ iconStyle: external_exports.object({
16445
+ vector: external_exports.object({
16446
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16447
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16448
+ paths: external_exports.array(external_exports.object({
16449
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16450
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16451
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16452
+ }).strict()).min(1).max(32)
16453
+ }).strict().optional(),
16454
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16455
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16456
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16457
+ }).strict().optional(),
16458
+ installation: harnessInstallationGuideSchema.optional(),
16459
+ notice: localizedTextSchema.optional(),
16460
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16461
+ launchCommand: external_exports.literal(true).optional(),
16462
+ links: external_exports.object({
16463
+ website: documentationUrlSchema.optional(),
16464
+ documentation: documentationUrlSchema.optional(),
16465
+ installation: documentationUrlSchema.optional()
16466
+ }).strict().optional()
16467
+ };
16468
+ var harnessPluginManifestSchema = external_exports.object({
16469
+ manifestVersion: external_exports.literal(1),
16470
+ ...pluginPresentationShape,
16471
+ adapterApiVersion: external_exports.number().int().positive(),
16472
+ entry: relativeResourceSchema,
16473
+ icon: relativeResourceSchema.optional()
16474
+ }).strict();
16475
+ 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);
16476
+ var harnessPluginDescriptorSchema = external_exports.object({
16477
+ ...pluginPresentationShape,
16478
+ icon: harnessPluginIconSchema.optional()
16479
+ }).strict();
16480
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16481
+ var harnessPluginListResultSchema = external_exports.object({
16482
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16483
+ }).strict();
16484
+ var harnessPluginConfigurationSchema = external_exports.object({
16485
+ version: external_exports.literal(1),
16486
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16487
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16488
+ message: "Enabled plugin IDs must be unique",
16489
+ path: ["enabled"]
16490
+ });
16491
+
16479
16492
  // ../../shared-contracts/dist/harness-route.js
16480
16493
  var harnessPluginRouteSchema = external_exports.object({
16481
16494
  harnessId: harnessPluginIdSchema,
@@ -16669,6 +16682,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16669
16682
  }).strict();
16670
16683
  var harnessCommandCatalogSchema = external_exports.object({
16671
16684
  commands: external_exports.array(harnessCommandDescriptorSchema),
16685
+ /** Partial discovery failures; valid commands remain available. */
16686
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16672
16687
  /**
16673
16688
  * `live` when the catalog includes what a native Session reports for its
16674
16689
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16704,7 +16719,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16704
16719
  }).strict();
16705
16720
  var threadCommandExecuteResultSchema = external_exports.object({
16706
16721
  accepted: external_exports.literal(true),
16707
- turnId: hostTurnIdSchema
16722
+ turnId: hostTurnIdSchema.optional()
16708
16723
  }).strict();
16709
16724
 
16710
16725
  // ../../shared-contracts/dist/json-rpc.js
@@ -14616,7 +14616,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14616
14616
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14617
14617
  message: "Value must not be empty or whitespace"
14618
14618
  });
14619
- 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();
14619
+ 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();
14620
14620
  var harnessPermissionModeSchema = external_exports.object({
14621
14621
  id: harnessPermissionModeIdSchema,
14622
14622
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15000,7 +15000,12 @@ var threadInspectionParamsSchema = external_exports.object({
15000
15000
  }).strict();
15001
15001
  var codexThreadInspectionSchema = external_exports.object({
15002
15002
  owner: external_exports.literal("codex"),
15003
- locked: external_exports.literal(true),
15003
+ locked: external_exports.boolean(),
15004
+ effectiveModel: harnessModelRefSchema.optional(),
15005
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15006
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15007
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15008
+ history: harnessHistoryCapabilitiesSchema.optional(),
15004
15009
  supportsThreadReferences: external_exports.literal(true).optional()
15005
15010
  }).strict();
15006
15011
  var externalThreadInspectionSchema = external_exports.object({
@@ -15222,7 +15227,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15222
15227
  thread: external_exports.object({
15223
15228
  id: external_exports.string().min(1),
15224
15229
  cwd: external_exports.string(),
15225
- modelProvider: external_exports.literal("codexhost"),
15230
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15231
+ modelProvider: external_exports.string().min(1),
15226
15232
  createdAt: external_exports.number(),
15227
15233
  updatedAt: external_exports.number(),
15228
15234
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15236,6 +15242,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15236
15242
  nextCursor: external_exports.string().nullable()
15237
15243
  }),
15238
15244
  configuration: external_exports.object({
15245
+ /** Native Codex model names are not external Harness transport refs. */
15246
+ native: external_exports.object({
15247
+ model: external_exports.string().min(1).max(1024).optional(),
15248
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15249
+ }).optional(),
15239
15250
  effectiveModel: harnessModelRefSchema.optional(),
15240
15251
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15241
15252
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15262,6 +15273,21 @@ var clientChannelResponseSchema = external_exports.object({
15262
15273
  result: record2
15263
15274
  });
15264
15275
 
15276
+ // ../../shared-contracts/dist/thread-catalog.js
15277
+ var threadCatalogReadParamsSchema = external_exports.object({
15278
+ includeArchived: external_exports.boolean().optional(),
15279
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15280
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15281
+ }).strict();
15282
+ var threadCatalogReadResultSchema = external_exports.object({
15283
+ threads: external_exports.array(jsonObjectSchema),
15284
+ ownership: external_exports.array(threadOwnershipSchema),
15285
+ /** Known archived IDs, including visible local external records even when their rows are
15286
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15287
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15288
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15289
+ }).strict();
15290
+
15265
15291
  // ../../shared-contracts/dist/voice.js
15266
15292
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15267
15293
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15474,96 +15500,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15474
15500
  });
15475
15501
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15476
15502
  enabled: false,
15477
- timeoutMinutes: 30
15478
- });
15479
-
15480
- // ../../shared-contracts/dist/harness-plugins.js
15481
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15482
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15483
- var HARNESS_PLUGIN_LIMIT = 128;
15484
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15485
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15486
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15487
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15488
- 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");
15489
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15490
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15491
- var harnessInstallationGuideSchema = external_exports.object({
15492
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15493
- before: localizedTextSchema.optional(),
15494
- after: localizedTextSchema.optional(),
15495
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15496
- }).strict();
15497
- var pluginPresentationShape = {
15498
- id: installedHarnessPluginIdSchema,
15499
- name: external_exports.string().trim().min(1).max(128),
15500
- version: external_exports.string().min(1).max(128),
15501
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15502
- kind: external_exports.literal("usage").optional(),
15503
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15504
- iconStyle: external_exports.object({
15505
- vector: external_exports.object({
15506
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15507
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15508
- paths: external_exports.array(external_exports.object({
15509
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15510
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15511
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15512
- }).strict()).min(1).max(32)
15513
- }).strict().optional(),
15514
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15515
- borderRadius: external_exports.number().min(0).max(50).optional(),
15516
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15517
- }).strict().optional(),
15518
- installation: harnessInstallationGuideSchema.optional(),
15519
- notice: localizedTextSchema.optional(),
15520
- /** The factory accepts a persisted local entrypoint through its construction context. */
15521
- launchCommand: external_exports.literal(true).optional(),
15522
- links: external_exports.object({
15523
- website: documentationUrlSchema.optional(),
15524
- documentation: documentationUrlSchema.optional(),
15525
- installation: documentationUrlSchema.optional()
15526
- }).strict().optional()
15527
- };
15528
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15529
- message: "Plugin surfaces must be unique"
15530
- });
15531
- var harnessPluginManifestSchema = external_exports.object({
15532
- manifestVersion: external_exports.literal(1),
15533
- ...pluginPresentationShape,
15534
- adapterApiVersion: external_exports.number().int().positive(),
15535
- entry: relativeResourceSchema,
15536
- icon: relativeResourceSchema.optional(),
15537
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15538
- surfaces: harnessPluginSurfacesSchema.optional()
15539
- }).strict();
15540
- 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);
15541
- var harnessPluginDescriptorSchema = external_exports.object({
15542
- ...pluginPresentationShape,
15543
- icon: harnessPluginIconSchema.optional()
15544
- }).strict();
15545
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15546
- var harnessPluginListResultSchema = external_exports.object({
15547
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15548
- }).strict();
15549
- var harnessPluginConfigurationSchema = external_exports.object({
15550
- version: external_exports.literal(1),
15551
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15552
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15553
- message: "Enabled plugin IDs must be unique",
15554
- path: ["enabled"]
15503
+ timeoutMinutes: 10
15555
15504
  });
15556
15505
 
15557
15506
  // ../../shared-contracts/dist/harness-preferences.js
15558
15507
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15559
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15508
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15560
15509
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15561
15510
  model: harnessModelRefSchema.optional(),
15562
15511
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15563
15512
  permissionModeId: harnessPermissionModeIdSchema.optional()
15564
15513
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15565
15514
  var newThreadDefaultsSchema = external_exports.strictObject({
15566
- lastHarness: installedHarnessPluginIdSchema.optional(),
15515
+ lastHarness: harnessIdSchema.optional(),
15567
15516
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15568
15517
  });
15569
15518
  var modelId = external_exports.string().min(1).max(1024);
@@ -15584,19 +15533,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15584
15533
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15585
15534
  external_exports.strictObject({
15586
15535
  kind: external_exports.literal("favorite"),
15587
- harnessId: installedHarnessPluginIdSchema,
15536
+ harnessId: harnessIdSchema,
15588
15537
  modelId,
15589
15538
  enabled: external_exports.boolean()
15590
15539
  }),
15591
15540
  external_exports.strictObject({
15592
15541
  kind: external_exports.literal("favorites"),
15593
- harnessId: installedHarnessPluginIdSchema,
15542
+ harnessId: harnessIdSchema,
15594
15543
  modelIds: external_exports.array(modelId).max(2048)
15595
15544
  }),
15596
15545
  external_exports.strictObject({
15597
15546
  kind: external_exports.literal("newThread"),
15598
- lastHarness: installedHarnessPluginIdSchema.optional(),
15599
- harnessId: installedHarnessPluginIdSchema.optional(),
15547
+ lastHarness: harnessIdSchema.optional(),
15548
+ harnessId: harnessIdSchema.optional(),
15600
15549
  configuration: harnessDefaultConfigurationSchema.optional()
15601
15550
  })
15602
15551
  ]);
@@ -15612,12 +15561,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15612
15561
  code: "custom",
15613
15562
  message: "A default Harness or complete configuration is required"
15614
15563
  });
15615
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15616
- if (harnessId === "codex")
15617
- ctx.addIssue({
15618
- code: "custom",
15619
- message: "Official Codex is not an external Harness"
15620
- });
15621
15564
  }
15622
15565
  });
15623
15566
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -15994,6 +15937,76 @@ var harnessAccountListResultSchema = external_exports.object({
15994
15937
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
15995
15938
  }).strict();
15996
15939
 
15940
+ // ../../shared-contracts/dist/harness-plugins.js
15941
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15942
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15943
+ var HARNESS_PLUGIN_LIMIT = 128;
15944
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15945
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15946
+ 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");
15947
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15948
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15949
+ var harnessInstallationGuideSchema = external_exports.object({
15950
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15951
+ before: localizedTextSchema.optional(),
15952
+ after: localizedTextSchema.optional(),
15953
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15954
+ }).strict();
15955
+ var pluginPresentationShape = {
15956
+ id: installedHarnessPluginIdSchema,
15957
+ name: external_exports.string().trim().min(1).max(128),
15958
+ version: external_exports.string().min(1).max(128),
15959
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15960
+ kind: external_exports.literal("usage").optional(),
15961
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15962
+ iconStyle: external_exports.object({
15963
+ vector: external_exports.object({
15964
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15965
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15966
+ paths: external_exports.array(external_exports.object({
15967
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15968
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15969
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15970
+ }).strict()).min(1).max(32)
15971
+ }).strict().optional(),
15972
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15973
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15974
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15975
+ }).strict().optional(),
15976
+ installation: harnessInstallationGuideSchema.optional(),
15977
+ notice: localizedTextSchema.optional(),
15978
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15979
+ launchCommand: external_exports.literal(true).optional(),
15980
+ links: external_exports.object({
15981
+ website: documentationUrlSchema.optional(),
15982
+ documentation: documentationUrlSchema.optional(),
15983
+ installation: documentationUrlSchema.optional()
15984
+ }).strict().optional()
15985
+ };
15986
+ var harnessPluginManifestSchema = external_exports.object({
15987
+ manifestVersion: external_exports.literal(1),
15988
+ ...pluginPresentationShape,
15989
+ adapterApiVersion: external_exports.number().int().positive(),
15990
+ entry: relativeResourceSchema,
15991
+ icon: relativeResourceSchema.optional()
15992
+ }).strict();
15993
+ 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);
15994
+ var harnessPluginDescriptorSchema = external_exports.object({
15995
+ ...pluginPresentationShape,
15996
+ icon: harnessPluginIconSchema.optional()
15997
+ }).strict();
15998
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
15999
+ var harnessPluginListResultSchema = external_exports.object({
16000
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16001
+ }).strict();
16002
+ var harnessPluginConfigurationSchema = external_exports.object({
16003
+ version: external_exports.literal(1),
16004
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16005
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16006
+ message: "Enabled plugin IDs must be unique",
16007
+ path: ["enabled"]
16008
+ });
16009
+
15997
16010
  // ../../shared-contracts/dist/harness-route.js
15998
16011
  var harnessPluginRouteSchema = external_exports.object({
15999
16012
  harnessId: harnessPluginIdSchema,
@@ -16187,6 +16200,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16187
16200
  }).strict();
16188
16201
  var harnessCommandCatalogSchema = external_exports.object({
16189
16202
  commands: external_exports.array(harnessCommandDescriptorSchema),
16203
+ /** Partial discovery failures; valid commands remain available. */
16204
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16190
16205
  /**
16191
16206
  * `live` when the catalog includes what a native Session reports for its
16192
16207
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16222,7 +16237,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16222
16237
  }).strict();
16223
16238
  var threadCommandExecuteResultSchema = external_exports.object({
16224
16239
  accepted: external_exports.literal(true),
16225
- turnId: hostTurnIdSchema
16240
+ turnId: hostTurnIdSchema.optional()
16226
16241
  }).strict();
16227
16242
 
16228
16243
  // ../../shared-contracts/dist/json-rpc.js