@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
@@ -15216,7 +15216,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15216
15216
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15217
15217
  message: "Value must not be empty or whitespace"
15218
15218
  });
15219
- 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();
15219
+ 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();
15220
15220
  var harnessPermissionModeSchema = external_exports.object({
15221
15221
  id: harnessPermissionModeIdSchema,
15222
15222
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15600,7 +15600,12 @@ var threadInspectionParamsSchema = external_exports.object({
15600
15600
  }).strict();
15601
15601
  var codexThreadInspectionSchema = external_exports.object({
15602
15602
  owner: external_exports.literal("codex"),
15603
- locked: external_exports.literal(true),
15603
+ locked: external_exports.boolean(),
15604
+ effectiveModel: harnessModelRefSchema.optional(),
15605
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15606
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15607
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15608
+ history: harnessHistoryCapabilitiesSchema.optional(),
15604
15609
  supportsThreadReferences: external_exports.literal(true).optional()
15605
15610
  }).strict();
15606
15611
  var externalThreadInspectionSchema = external_exports.object({
@@ -15822,7 +15827,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15822
15827
  thread: external_exports.object({
15823
15828
  id: external_exports.string().min(1),
15824
15829
  cwd: external_exports.string(),
15825
- modelProvider: external_exports.literal("codexhost"),
15830
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15831
+ modelProvider: external_exports.string().min(1),
15826
15832
  createdAt: external_exports.number(),
15827
15833
  updatedAt: external_exports.number(),
15828
15834
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15836,6 +15842,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15836
15842
  nextCursor: external_exports.string().nullable()
15837
15843
  }),
15838
15844
  configuration: external_exports.object({
15845
+ /** Native Codex model names are not external Harness transport refs. */
15846
+ native: external_exports.object({
15847
+ model: external_exports.string().min(1).max(1024).optional(),
15848
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15849
+ }).optional(),
15839
15850
  effectiveModel: harnessModelRefSchema.optional(),
15840
15851
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15841
15852
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15862,6 +15873,21 @@ var clientChannelResponseSchema = external_exports.object({
15862
15873
  result: record2
15863
15874
  });
15864
15875
 
15876
+ // ../../shared-contracts/dist/thread-catalog.js
15877
+ var threadCatalogReadParamsSchema = external_exports.object({
15878
+ includeArchived: external_exports.boolean().optional(),
15879
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15880
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15881
+ }).strict();
15882
+ var threadCatalogReadResultSchema = external_exports.object({
15883
+ threads: external_exports.array(jsonObjectSchema),
15884
+ ownership: external_exports.array(threadOwnershipSchema),
15885
+ /** Known archived IDs, including visible local external records even when their rows are
15886
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15887
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15888
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15889
+ }).strict();
15890
+
15865
15891
  // ../../shared-contracts/dist/voice.js
15866
15892
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15867
15893
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16074,96 +16100,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
16074
16100
  });
16075
16101
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16076
16102
  enabled: false,
16077
- timeoutMinutes: 30
16078
- });
16079
-
16080
- // ../../shared-contracts/dist/harness-plugins.js
16081
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16082
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16083
- var HARNESS_PLUGIN_LIMIT = 128;
16084
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16085
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16086
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16087
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16088
- 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");
16089
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16090
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16091
- var harnessInstallationGuideSchema = external_exports.object({
16092
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16093
- before: localizedTextSchema.optional(),
16094
- after: localizedTextSchema.optional(),
16095
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16096
- }).strict();
16097
- var pluginPresentationShape = {
16098
- id: installedHarnessPluginIdSchema,
16099
- name: external_exports.string().trim().min(1).max(128),
16100
- version: external_exports.string().min(1).max(128),
16101
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16102
- kind: external_exports.literal("usage").optional(),
16103
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16104
- iconStyle: external_exports.object({
16105
- vector: external_exports.object({
16106
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16107
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16108
- paths: external_exports.array(external_exports.object({
16109
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16110
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16111
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16112
- }).strict()).min(1).max(32)
16113
- }).strict().optional(),
16114
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16115
- borderRadius: external_exports.number().min(0).max(50).optional(),
16116
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16117
- }).strict().optional(),
16118
- installation: harnessInstallationGuideSchema.optional(),
16119
- notice: localizedTextSchema.optional(),
16120
- /** The factory accepts a persisted local entrypoint through its construction context. */
16121
- launchCommand: external_exports.literal(true).optional(),
16122
- links: external_exports.object({
16123
- website: documentationUrlSchema.optional(),
16124
- documentation: documentationUrlSchema.optional(),
16125
- installation: documentationUrlSchema.optional()
16126
- }).strict().optional()
16127
- };
16128
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16129
- message: "Plugin surfaces must be unique"
16130
- });
16131
- var harnessPluginManifestSchema = external_exports.object({
16132
- manifestVersion: external_exports.literal(1),
16133
- ...pluginPresentationShape,
16134
- adapterApiVersion: external_exports.number().int().positive(),
16135
- entry: relativeResourceSchema,
16136
- icon: relativeResourceSchema.optional(),
16137
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16138
- surfaces: harnessPluginSurfacesSchema.optional()
16139
- }).strict();
16140
- 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);
16141
- var harnessPluginDescriptorSchema = external_exports.object({
16142
- ...pluginPresentationShape,
16143
- icon: harnessPluginIconSchema.optional()
16144
- }).strict();
16145
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16146
- var harnessPluginListResultSchema = external_exports.object({
16147
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16148
- }).strict();
16149
- var harnessPluginConfigurationSchema = external_exports.object({
16150
- version: external_exports.literal(1),
16151
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16152
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16153
- message: "Enabled plugin IDs must be unique",
16154
- path: ["enabled"]
16103
+ timeoutMinutes: 10
16155
16104
  });
16156
16105
 
16157
16106
  // ../../shared-contracts/dist/harness-preferences.js
16158
16107
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16159
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16108
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16160
16109
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16161
16110
  model: harnessModelRefSchema.optional(),
16162
16111
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16163
16112
  permissionModeId: harnessPermissionModeIdSchema.optional()
16164
16113
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16165
16114
  var newThreadDefaultsSchema = external_exports.strictObject({
16166
- lastHarness: installedHarnessPluginIdSchema.optional(),
16115
+ lastHarness: harnessIdSchema.optional(),
16167
16116
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16168
16117
  });
16169
16118
  var modelId = external_exports.string().min(1).max(1024);
@@ -16184,19 +16133,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16184
16133
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16185
16134
  external_exports.strictObject({
16186
16135
  kind: external_exports.literal("favorite"),
16187
- harnessId: installedHarnessPluginIdSchema,
16136
+ harnessId: harnessIdSchema,
16188
16137
  modelId,
16189
16138
  enabled: external_exports.boolean()
16190
16139
  }),
16191
16140
  external_exports.strictObject({
16192
16141
  kind: external_exports.literal("favorites"),
16193
- harnessId: installedHarnessPluginIdSchema,
16142
+ harnessId: harnessIdSchema,
16194
16143
  modelIds: external_exports.array(modelId).max(2048)
16195
16144
  }),
16196
16145
  external_exports.strictObject({
16197
16146
  kind: external_exports.literal("newThread"),
16198
- lastHarness: installedHarnessPluginIdSchema.optional(),
16199
- harnessId: installedHarnessPluginIdSchema.optional(),
16147
+ lastHarness: harnessIdSchema.optional(),
16148
+ harnessId: harnessIdSchema.optional(),
16200
16149
  configuration: harnessDefaultConfigurationSchema.optional()
16201
16150
  })
16202
16151
  ]);
@@ -16212,12 +16161,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16212
16161
  code: "custom",
16213
16162
  message: "A default Harness or complete configuration is required"
16214
16163
  });
16215
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16216
- if (harnessId === "codex")
16217
- ctx.addIssue({
16218
- code: "custom",
16219
- message: "Official Codex is not an external Harness"
16220
- });
16221
16164
  }
16222
16165
  });
16223
16166
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16594,6 +16537,76 @@ var harnessAccountListResultSchema = external_exports.object({
16594
16537
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16595
16538
  }).strict();
16596
16539
 
16540
+ // ../../shared-contracts/dist/harness-plugins.js
16541
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16542
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16543
+ var HARNESS_PLUGIN_LIMIT = 128;
16544
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16545
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16546
+ 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");
16547
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16548
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16549
+ var harnessInstallationGuideSchema = external_exports.object({
16550
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16551
+ before: localizedTextSchema.optional(),
16552
+ after: localizedTextSchema.optional(),
16553
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16554
+ }).strict();
16555
+ var pluginPresentationShape = {
16556
+ id: installedHarnessPluginIdSchema,
16557
+ name: external_exports.string().trim().min(1).max(128),
16558
+ version: external_exports.string().min(1).max(128),
16559
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16560
+ kind: external_exports.literal("usage").optional(),
16561
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16562
+ iconStyle: external_exports.object({
16563
+ vector: external_exports.object({
16564
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16565
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16566
+ paths: external_exports.array(external_exports.object({
16567
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16568
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16569
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16570
+ }).strict()).min(1).max(32)
16571
+ }).strict().optional(),
16572
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16573
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16574
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16575
+ }).strict().optional(),
16576
+ installation: harnessInstallationGuideSchema.optional(),
16577
+ notice: localizedTextSchema.optional(),
16578
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16579
+ launchCommand: external_exports.literal(true).optional(),
16580
+ links: external_exports.object({
16581
+ website: documentationUrlSchema.optional(),
16582
+ documentation: documentationUrlSchema.optional(),
16583
+ installation: documentationUrlSchema.optional()
16584
+ }).strict().optional()
16585
+ };
16586
+ var harnessPluginManifestSchema = external_exports.object({
16587
+ manifestVersion: external_exports.literal(1),
16588
+ ...pluginPresentationShape,
16589
+ adapterApiVersion: external_exports.number().int().positive(),
16590
+ entry: relativeResourceSchema,
16591
+ icon: relativeResourceSchema.optional()
16592
+ }).strict();
16593
+ 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);
16594
+ var harnessPluginDescriptorSchema = external_exports.object({
16595
+ ...pluginPresentationShape,
16596
+ icon: harnessPluginIconSchema.optional()
16597
+ }).strict();
16598
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16599
+ var harnessPluginListResultSchema = external_exports.object({
16600
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16601
+ }).strict();
16602
+ var harnessPluginConfigurationSchema = external_exports.object({
16603
+ version: external_exports.literal(1),
16604
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16605
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16606
+ message: "Enabled plugin IDs must be unique",
16607
+ path: ["enabled"]
16608
+ });
16609
+
16597
16610
  // ../../shared-contracts/dist/harness-route.js
16598
16611
  var harnessPluginRouteSchema = external_exports.object({
16599
16612
  harnessId: harnessPluginIdSchema,
@@ -16787,6 +16800,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16787
16800
  }).strict();
16788
16801
  var harnessCommandCatalogSchema = external_exports.object({
16789
16802
  commands: external_exports.array(harnessCommandDescriptorSchema),
16803
+ /** Partial discovery failures; valid commands remain available. */
16804
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16790
16805
  /**
16791
16806
  * `live` when the catalog includes what a native Session reports for its
16792
16807
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16822,7 +16837,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16822
16837
  }).strict();
16823
16838
  var threadCommandExecuteResultSchema = external_exports.object({
16824
16839
  accepted: external_exports.literal(true),
16825
- turnId: hostTurnIdSchema
16840
+ turnId: hostTurnIdSchema.optional()
16826
16841
  }).strict();
16827
16842
 
16828
16843
  // ../../shared-contracts/dist/json-rpc.js
@@ -14983,7 +14983,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14983
14983
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14984
14984
  message: "Value must not be empty or whitespace"
14985
14985
  });
14986
- 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();
14986
+ 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();
14987
14987
  var harnessPermissionModeSchema = external_exports.object({
14988
14988
  id: harnessPermissionModeIdSchema,
14989
14989
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15367,7 +15367,12 @@ var threadInspectionParamsSchema = external_exports.object({
15367
15367
  }).strict();
15368
15368
  var codexThreadInspectionSchema = external_exports.object({
15369
15369
  owner: external_exports.literal("codex"),
15370
- locked: external_exports.literal(true),
15370
+ locked: external_exports.boolean(),
15371
+ effectiveModel: harnessModelRefSchema.optional(),
15372
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15373
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15374
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15375
+ history: harnessHistoryCapabilitiesSchema.optional(),
15371
15376
  supportsThreadReferences: external_exports.literal(true).optional()
15372
15377
  }).strict();
15373
15378
  var externalThreadInspectionSchema = external_exports.object({
@@ -15589,7 +15594,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15589
15594
  thread: external_exports.object({
15590
15595
  id: external_exports.string().min(1),
15591
15596
  cwd: external_exports.string(),
15592
- modelProvider: external_exports.literal("codexhost"),
15597
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15598
+ modelProvider: external_exports.string().min(1),
15593
15599
  createdAt: external_exports.number(),
15594
15600
  updatedAt: external_exports.number(),
15595
15601
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15603,6 +15609,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15603
15609
  nextCursor: external_exports.string().nullable()
15604
15610
  }),
15605
15611
  configuration: external_exports.object({
15612
+ /** Native Codex model names are not external Harness transport refs. */
15613
+ native: external_exports.object({
15614
+ model: external_exports.string().min(1).max(1024).optional(),
15615
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15616
+ }).optional(),
15606
15617
  effectiveModel: harnessModelRefSchema.optional(),
15607
15618
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15608
15619
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15629,6 +15640,21 @@ var clientChannelResponseSchema = external_exports.object({
15629
15640
  result: record2
15630
15641
  });
15631
15642
 
15643
+ // ../../shared-contracts/dist/thread-catalog.js
15644
+ var threadCatalogReadParamsSchema = external_exports.object({
15645
+ includeArchived: external_exports.boolean().optional(),
15646
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15647
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15648
+ }).strict();
15649
+ var threadCatalogReadResultSchema = external_exports.object({
15650
+ threads: external_exports.array(jsonObjectSchema),
15651
+ ownership: external_exports.array(threadOwnershipSchema),
15652
+ /** Known archived IDs, including visible local external records even when their rows are
15653
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15654
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15655
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15656
+ }).strict();
15657
+
15632
15658
  // ../../shared-contracts/dist/voice.js
15633
15659
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15634
15660
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15841,96 +15867,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15841
15867
  });
15842
15868
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15843
15869
  enabled: false,
15844
- timeoutMinutes: 30
15845
- });
15846
-
15847
- // ../../shared-contracts/dist/harness-plugins.js
15848
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15849
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15850
- var HARNESS_PLUGIN_LIMIT = 128;
15851
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15852
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15853
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15854
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15855
- 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");
15856
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15857
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15858
- var harnessInstallationGuideSchema = external_exports.object({
15859
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15860
- before: localizedTextSchema.optional(),
15861
- after: localizedTextSchema.optional(),
15862
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15863
- }).strict();
15864
- var pluginPresentationShape = {
15865
- id: installedHarnessPluginIdSchema,
15866
- name: external_exports.string().trim().min(1).max(128),
15867
- version: external_exports.string().min(1).max(128),
15868
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15869
- kind: external_exports.literal("usage").optional(),
15870
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15871
- iconStyle: external_exports.object({
15872
- vector: external_exports.object({
15873
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15874
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15875
- paths: external_exports.array(external_exports.object({
15876
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15877
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15878
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15879
- }).strict()).min(1).max(32)
15880
- }).strict().optional(),
15881
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15882
- borderRadius: external_exports.number().min(0).max(50).optional(),
15883
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15884
- }).strict().optional(),
15885
- installation: harnessInstallationGuideSchema.optional(),
15886
- notice: localizedTextSchema.optional(),
15887
- /** The factory accepts a persisted local entrypoint through its construction context. */
15888
- launchCommand: external_exports.literal(true).optional(),
15889
- links: external_exports.object({
15890
- website: documentationUrlSchema.optional(),
15891
- documentation: documentationUrlSchema.optional(),
15892
- installation: documentationUrlSchema.optional()
15893
- }).strict().optional()
15894
- };
15895
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15896
- message: "Plugin surfaces must be unique"
15897
- });
15898
- var harnessPluginManifestSchema = external_exports.object({
15899
- manifestVersion: external_exports.literal(1),
15900
- ...pluginPresentationShape,
15901
- adapterApiVersion: external_exports.number().int().positive(),
15902
- entry: relativeResourceSchema,
15903
- icon: relativeResourceSchema.optional(),
15904
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15905
- surfaces: harnessPluginSurfacesSchema.optional()
15906
- }).strict();
15907
- 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);
15908
- var harnessPluginDescriptorSchema = external_exports.object({
15909
- ...pluginPresentationShape,
15910
- icon: harnessPluginIconSchema.optional()
15911
- }).strict();
15912
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15913
- var harnessPluginListResultSchema = external_exports.object({
15914
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15915
- }).strict();
15916
- var harnessPluginConfigurationSchema = external_exports.object({
15917
- version: external_exports.literal(1),
15918
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15919
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15920
- message: "Enabled plugin IDs must be unique",
15921
- path: ["enabled"]
15870
+ timeoutMinutes: 10
15922
15871
  });
15923
15872
 
15924
15873
  // ../../shared-contracts/dist/harness-preferences.js
15925
15874
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15926
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15875
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15927
15876
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15928
15877
  model: harnessModelRefSchema.optional(),
15929
15878
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15930
15879
  permissionModeId: harnessPermissionModeIdSchema.optional()
15931
15880
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15932
15881
  var newThreadDefaultsSchema = external_exports.strictObject({
15933
- lastHarness: installedHarnessPluginIdSchema.optional(),
15882
+ lastHarness: harnessIdSchema.optional(),
15934
15883
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15935
15884
  });
15936
15885
  var modelId = external_exports.string().min(1).max(1024);
@@ -15951,19 +15900,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15951
15900
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15952
15901
  external_exports.strictObject({
15953
15902
  kind: external_exports.literal("favorite"),
15954
- harnessId: installedHarnessPluginIdSchema,
15903
+ harnessId: harnessIdSchema,
15955
15904
  modelId,
15956
15905
  enabled: external_exports.boolean()
15957
15906
  }),
15958
15907
  external_exports.strictObject({
15959
15908
  kind: external_exports.literal("favorites"),
15960
- harnessId: installedHarnessPluginIdSchema,
15909
+ harnessId: harnessIdSchema,
15961
15910
  modelIds: external_exports.array(modelId).max(2048)
15962
15911
  }),
15963
15912
  external_exports.strictObject({
15964
15913
  kind: external_exports.literal("newThread"),
15965
- lastHarness: installedHarnessPluginIdSchema.optional(),
15966
- harnessId: installedHarnessPluginIdSchema.optional(),
15914
+ lastHarness: harnessIdSchema.optional(),
15915
+ harnessId: harnessIdSchema.optional(),
15967
15916
  configuration: harnessDefaultConfigurationSchema.optional()
15968
15917
  })
15969
15918
  ]);
@@ -15979,12 +15928,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15979
15928
  code: "custom",
15980
15929
  message: "A default Harness or complete configuration is required"
15981
15930
  });
15982
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15983
- if (harnessId === "codex")
15984
- ctx.addIssue({
15985
- code: "custom",
15986
- message: "Official Codex is not an external Harness"
15987
- });
15988
15931
  }
15989
15932
  });
15990
15933
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16361,6 +16304,76 @@ var harnessAccountListResultSchema = external_exports.object({
16361
16304
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16362
16305
  }).strict();
16363
16306
 
16307
+ // ../../shared-contracts/dist/harness-plugins.js
16308
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16309
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16310
+ var HARNESS_PLUGIN_LIMIT = 128;
16311
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16312
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16313
+ 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");
16314
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16315
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16316
+ var harnessInstallationGuideSchema = external_exports.object({
16317
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16318
+ before: localizedTextSchema.optional(),
16319
+ after: localizedTextSchema.optional(),
16320
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16321
+ }).strict();
16322
+ var pluginPresentationShape = {
16323
+ id: installedHarnessPluginIdSchema,
16324
+ name: external_exports.string().trim().min(1).max(128),
16325
+ version: external_exports.string().min(1).max(128),
16326
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16327
+ kind: external_exports.literal("usage").optional(),
16328
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16329
+ iconStyle: external_exports.object({
16330
+ vector: external_exports.object({
16331
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16332
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16333
+ paths: external_exports.array(external_exports.object({
16334
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16335
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16336
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16337
+ }).strict()).min(1).max(32)
16338
+ }).strict().optional(),
16339
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16340
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16341
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16342
+ }).strict().optional(),
16343
+ installation: harnessInstallationGuideSchema.optional(),
16344
+ notice: localizedTextSchema.optional(),
16345
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16346
+ launchCommand: external_exports.literal(true).optional(),
16347
+ links: external_exports.object({
16348
+ website: documentationUrlSchema.optional(),
16349
+ documentation: documentationUrlSchema.optional(),
16350
+ installation: documentationUrlSchema.optional()
16351
+ }).strict().optional()
16352
+ };
16353
+ var harnessPluginManifestSchema = external_exports.object({
16354
+ manifestVersion: external_exports.literal(1),
16355
+ ...pluginPresentationShape,
16356
+ adapterApiVersion: external_exports.number().int().positive(),
16357
+ entry: relativeResourceSchema,
16358
+ icon: relativeResourceSchema.optional()
16359
+ }).strict();
16360
+ 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);
16361
+ var harnessPluginDescriptorSchema = external_exports.object({
16362
+ ...pluginPresentationShape,
16363
+ icon: harnessPluginIconSchema.optional()
16364
+ }).strict();
16365
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16366
+ var harnessPluginListResultSchema = external_exports.object({
16367
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16368
+ }).strict();
16369
+ var harnessPluginConfigurationSchema = external_exports.object({
16370
+ version: external_exports.literal(1),
16371
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16372
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16373
+ message: "Enabled plugin IDs must be unique",
16374
+ path: ["enabled"]
16375
+ });
16376
+
16364
16377
  // ../../shared-contracts/dist/harness-route.js
16365
16378
  var harnessPluginRouteSchema = external_exports.object({
16366
16379
  harnessId: harnessPluginIdSchema,
@@ -16554,6 +16567,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16554
16567
  }).strict();
16555
16568
  var harnessCommandCatalogSchema = external_exports.object({
16556
16569
  commands: external_exports.array(harnessCommandDescriptorSchema),
16570
+ /** Partial discovery failures; valid commands remain available. */
16571
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16557
16572
  /**
16558
16573
  * `live` when the catalog includes what a native Session reports for its
16559
16574
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16589,7 +16604,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16589
16604
  }).strict();
16590
16605
  var threadCommandExecuteResultSchema = external_exports.object({
16591
16606
  accepted: external_exports.literal(true),
16592
- turnId: hostTurnIdSchema
16607
+ turnId: hostTurnIdSchema.optional()
16593
16608
  }).strict();
16594
16609
 
16595
16610
  // ../../shared-contracts/dist/json-rpc.js