@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
@@ -27205,7 +27205,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
27205
27205
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
27206
27206
  message: "Value must not be empty or whitespace"
27207
27207
  });
27208
- 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();
27208
+ 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();
27209
27209
  var harnessPermissionModeSchema = external_exports.object({
27210
27210
  id: harnessPermissionModeIdSchema,
27211
27211
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -27589,7 +27589,12 @@ var threadInspectionParamsSchema = external_exports.object({
27589
27589
  }).strict();
27590
27590
  var codexThreadInspectionSchema = external_exports.object({
27591
27591
  owner: external_exports.literal("codex"),
27592
- locked: external_exports.literal(true),
27592
+ locked: external_exports.boolean(),
27593
+ effectiveModel: harnessModelRefSchema.optional(),
27594
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
27595
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
27596
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
27597
+ history: harnessHistoryCapabilitiesSchema.optional(),
27593
27598
  supportsThreadReferences: external_exports.literal(true).optional()
27594
27599
  }).strict();
27595
27600
  var externalThreadInspectionSchema = external_exports.object({
@@ -27811,7 +27816,8 @@ var clientThreadSnapshotSchema = external_exports.object({
27811
27816
  thread: external_exports.object({
27812
27817
  id: external_exports.string().min(1),
27813
27818
  cwd: external_exports.string(),
27814
- modelProvider: external_exports.literal("codexhost"),
27819
+ /** External rows use codexhost; native Codex rows retain their official provider. */
27820
+ modelProvider: external_exports.string().min(1),
27815
27821
  createdAt: external_exports.number(),
27816
27822
  updatedAt: external_exports.number(),
27817
27823
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -27825,6 +27831,11 @@ var clientThreadSnapshotSchema = external_exports.object({
27825
27831
  nextCursor: external_exports.string().nullable()
27826
27832
  }),
27827
27833
  configuration: external_exports.object({
27834
+ /** Native Codex model names are not external Harness transport refs. */
27835
+ native: external_exports.object({
27836
+ model: external_exports.string().min(1).max(1024).optional(),
27837
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
27838
+ }).optional(),
27828
27839
  effectiveModel: harnessModelRefSchema.optional(),
27829
27840
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
27830
27841
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -27851,6 +27862,21 @@ var clientChannelResponseSchema = external_exports.object({
27851
27862
  result: record2
27852
27863
  });
27853
27864
 
27865
+ // ../../shared-contracts/dist/thread-catalog.js
27866
+ var threadCatalogReadParamsSchema = external_exports.object({
27867
+ includeArchived: external_exports.boolean().optional(),
27868
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
27869
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
27870
+ }).strict();
27871
+ var threadCatalogReadResultSchema = external_exports.object({
27872
+ threads: external_exports.array(jsonObjectSchema),
27873
+ ownership: external_exports.array(threadOwnershipSchema),
27874
+ /** Known archived IDs, including visible local external records even when their rows are
27875
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
27876
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
27877
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
27878
+ }).strict();
27879
+
27854
27880
  // ../../shared-contracts/dist/voice.js
27855
27881
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
27856
27882
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -28063,96 +28089,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
28063
28089
  });
28064
28090
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
28065
28091
  enabled: false,
28066
- timeoutMinutes: 30
28067
- });
28068
-
28069
- // ../../shared-contracts/dist/harness-plugins.js
28070
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
28071
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
28072
- var HARNESS_PLUGIN_LIMIT = 128;
28073
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
28074
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
28075
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
28076
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id3) => id3 !== "codex", "The official Codex identity is reserved");
28077
- 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");
28078
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
28079
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
28080
- var harnessInstallationGuideSchema = external_exports.object({
28081
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
28082
- before: localizedTextSchema.optional(),
28083
- after: localizedTextSchema.optional(),
28084
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
28085
- }).strict();
28086
- var pluginPresentationShape = {
28087
- id: installedHarnessPluginIdSchema,
28088
- name: external_exports.string().trim().min(1).max(128),
28089
- version: external_exports.string().min(1).max(128),
28090
- /** Capability-only plugin; omitted for existing session-capable plugins. */
28091
- kind: external_exports.literal("usage").optional(),
28092
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
28093
- iconStyle: external_exports.object({
28094
- vector: external_exports.object({
28095
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
28096
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
28097
- paths: external_exports.array(external_exports.object({
28098
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
28099
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
28100
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
28101
- }).strict()).min(1).max(32)
28102
- }).strict().optional(),
28103
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
28104
- borderRadius: external_exports.number().min(0).max(50).optional(),
28105
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
28106
- }).strict().optional(),
28107
- installation: harnessInstallationGuideSchema.optional(),
28108
- notice: localizedTextSchema.optional(),
28109
- /** The factory accepts a persisted local entrypoint through its construction context. */
28110
- launchCommand: external_exports.literal(true).optional(),
28111
- links: external_exports.object({
28112
- website: documentationUrlSchema.optional(),
28113
- documentation: documentationUrlSchema.optional(),
28114
- installation: documentationUrlSchema.optional()
28115
- }).strict().optional()
28116
- };
28117
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
28118
- message: "Plugin surfaces must be unique"
28119
- });
28120
- var harnessPluginManifestSchema = external_exports.object({
28121
- manifestVersion: external_exports.literal(1),
28122
- ...pluginPresentationShape,
28123
- adapterApiVersion: external_exports.number().int().positive(),
28124
- entry: relativeResourceSchema,
28125
- icon: relativeResourceSchema.optional(),
28126
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
28127
- surfaces: harnessPluginSurfacesSchema.optional()
28128
- }).strict();
28129
- 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);
28130
- var harnessPluginDescriptorSchema = external_exports.object({
28131
- ...pluginPresentationShape,
28132
- icon: harnessPluginIconSchema.optional()
28133
- }).strict();
28134
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
28135
- var harnessPluginListResultSchema = external_exports.object({
28136
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
28137
- }).strict();
28138
- var harnessPluginConfigurationSchema = external_exports.object({
28139
- version: external_exports.literal(1),
28140
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
28141
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
28142
- message: "Enabled plugin IDs must be unique",
28143
- path: ["enabled"]
28092
+ timeoutMinutes: 10
28144
28093
  });
28145
28094
 
28146
28095
  // ../../shared-contracts/dist/harness-preferences.js
28147
28096
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
28148
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id3) => String(id3));
28097
+ var preferenceHarnessKey = harnessIdSchema.transform((id3) => String(id3));
28149
28098
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
28150
28099
  model: harnessModelRefSchema.optional(),
28151
28100
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
28152
28101
  permissionModeId: harnessPermissionModeIdSchema.optional()
28153
28102
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
28154
28103
  var newThreadDefaultsSchema = external_exports.strictObject({
28155
- lastHarness: installedHarnessPluginIdSchema.optional(),
28104
+ lastHarness: harnessIdSchema.optional(),
28156
28105
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
28157
28106
  });
28158
28107
  var modelId = external_exports.string().min(1).max(1024);
@@ -28173,19 +28122,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
28173
28122
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
28174
28123
  external_exports.strictObject({
28175
28124
  kind: external_exports.literal("favorite"),
28176
- harnessId: installedHarnessPluginIdSchema,
28125
+ harnessId: harnessIdSchema,
28177
28126
  modelId,
28178
28127
  enabled: external_exports.boolean()
28179
28128
  }),
28180
28129
  external_exports.strictObject({
28181
28130
  kind: external_exports.literal("favorites"),
28182
- harnessId: installedHarnessPluginIdSchema,
28131
+ harnessId: harnessIdSchema,
28183
28132
  modelIds: external_exports.array(modelId).max(2048)
28184
28133
  }),
28185
28134
  external_exports.strictObject({
28186
28135
  kind: external_exports.literal("newThread"),
28187
- lastHarness: installedHarnessPluginIdSchema.optional(),
28188
- harnessId: installedHarnessPluginIdSchema.optional(),
28136
+ lastHarness: harnessIdSchema.optional(),
28137
+ harnessId: harnessIdSchema.optional(),
28189
28138
  configuration: harnessDefaultConfigurationSchema.optional()
28190
28139
  })
28191
28140
  ]);
@@ -28201,12 +28150,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
28201
28150
  code: "custom",
28202
28151
  message: "A default Harness or complete configuration is required"
28203
28152
  });
28204
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
28205
- if (harnessId === "codex")
28206
- ctx.addIssue({
28207
- code: "custom",
28208
- message: "Official Codex is not an external Harness"
28209
- });
28210
28153
  }
28211
28154
  });
28212
28155
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -28583,6 +28526,76 @@ var harnessAccountListResultSchema = external_exports.object({
28583
28526
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
28584
28527
  }).strict();
28585
28528
 
28529
+ // ../../shared-contracts/dist/harness-plugins.js
28530
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
28531
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
28532
+ var HARNESS_PLUGIN_LIMIT = 128;
28533
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
28534
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id3) => id3 !== "codex", "The official Codex identity is reserved");
28535
+ 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");
28536
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
28537
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
28538
+ var harnessInstallationGuideSchema = external_exports.object({
28539
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
28540
+ before: localizedTextSchema.optional(),
28541
+ after: localizedTextSchema.optional(),
28542
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
28543
+ }).strict();
28544
+ var pluginPresentationShape = {
28545
+ id: installedHarnessPluginIdSchema,
28546
+ name: external_exports.string().trim().min(1).max(128),
28547
+ version: external_exports.string().min(1).max(128),
28548
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
28549
+ kind: external_exports.literal("usage").optional(),
28550
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
28551
+ iconStyle: external_exports.object({
28552
+ vector: external_exports.object({
28553
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
28554
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
28555
+ paths: external_exports.array(external_exports.object({
28556
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
28557
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
28558
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
28559
+ }).strict()).min(1).max(32)
28560
+ }).strict().optional(),
28561
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
28562
+ borderRadius: external_exports.number().min(0).max(50).optional(),
28563
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
28564
+ }).strict().optional(),
28565
+ installation: harnessInstallationGuideSchema.optional(),
28566
+ notice: localizedTextSchema.optional(),
28567
+ /** The factory accepts a persisted local entrypoint through its construction context. */
28568
+ launchCommand: external_exports.literal(true).optional(),
28569
+ links: external_exports.object({
28570
+ website: documentationUrlSchema.optional(),
28571
+ documentation: documentationUrlSchema.optional(),
28572
+ installation: documentationUrlSchema.optional()
28573
+ }).strict().optional()
28574
+ };
28575
+ var harnessPluginManifestSchema = external_exports.object({
28576
+ manifestVersion: external_exports.literal(1),
28577
+ ...pluginPresentationShape,
28578
+ adapterApiVersion: external_exports.number().int().positive(),
28579
+ entry: relativeResourceSchema,
28580
+ icon: relativeResourceSchema.optional()
28581
+ }).strict();
28582
+ 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);
28583
+ var harnessPluginDescriptorSchema = external_exports.object({
28584
+ ...pluginPresentationShape,
28585
+ icon: harnessPluginIconSchema.optional()
28586
+ }).strict();
28587
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
28588
+ var harnessPluginListResultSchema = external_exports.object({
28589
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
28590
+ }).strict();
28591
+ var harnessPluginConfigurationSchema = external_exports.object({
28592
+ version: external_exports.literal(1),
28593
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
28594
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
28595
+ message: "Enabled plugin IDs must be unique",
28596
+ path: ["enabled"]
28597
+ });
28598
+
28586
28599
  // ../../shared-contracts/dist/harness-route.js
28587
28600
  var harnessPluginRouteSchema = external_exports.object({
28588
28601
  harnessId: harnessPluginIdSchema,
@@ -28776,6 +28789,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
28776
28789
  }).strict();
28777
28790
  var harnessCommandCatalogSchema = external_exports.object({
28778
28791
  commands: external_exports.array(harnessCommandDescriptorSchema),
28792
+ /** Partial discovery failures; valid commands remain available. */
28793
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
28779
28794
  /**
28780
28795
  * `live` when the catalog includes what a native Session reports for its
28781
28796
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -28811,7 +28826,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
28811
28826
  }).strict();
28812
28827
  var threadCommandExecuteResultSchema = external_exports.object({
28813
28828
  accepted: external_exports.literal(true),
28814
- turnId: hostTurnIdSchema
28829
+ turnId: hostTurnIdSchema.optional()
28815
28830
  }).strict();
28816
28831
 
28817
28832
  // ../../shared-contracts/dist/json-rpc.js
@@ -21510,7 +21510,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
21510
21510
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
21511
21511
  message: "Value must not be empty or whitespace"
21512
21512
  });
21513
- 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();
21513
+ 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();
21514
21514
  var harnessPermissionModeSchema = external_exports.object({
21515
21515
  id: harnessPermissionModeIdSchema,
21516
21516
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -21894,7 +21894,12 @@ var threadInspectionParamsSchema = external_exports.object({
21894
21894
  }).strict();
21895
21895
  var codexThreadInspectionSchema = external_exports.object({
21896
21896
  owner: external_exports.literal("codex"),
21897
- locked: external_exports.literal(true),
21897
+ locked: external_exports.boolean(),
21898
+ effectiveModel: harnessModelRefSchema.optional(),
21899
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
21900
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
21901
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
21902
+ history: harnessHistoryCapabilitiesSchema.optional(),
21898
21903
  supportsThreadReferences: external_exports.literal(true).optional()
21899
21904
  }).strict();
21900
21905
  var externalThreadInspectionSchema = external_exports.object({
@@ -22116,7 +22121,8 @@ var clientThreadSnapshotSchema = external_exports.object({
22116
22121
  thread: external_exports.object({
22117
22122
  id: external_exports.string().min(1),
22118
22123
  cwd: external_exports.string(),
22119
- modelProvider: external_exports.literal("codexhost"),
22124
+ /** External rows use codexhost; native Codex rows retain their official provider. */
22125
+ modelProvider: external_exports.string().min(1),
22120
22126
  createdAt: external_exports.number(),
22121
22127
  updatedAt: external_exports.number(),
22122
22128
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -22130,6 +22136,11 @@ var clientThreadSnapshotSchema = external_exports.object({
22130
22136
  nextCursor: external_exports.string().nullable()
22131
22137
  }),
22132
22138
  configuration: external_exports.object({
22139
+ /** Native Codex model names are not external Harness transport refs. */
22140
+ native: external_exports.object({
22141
+ model: external_exports.string().min(1).max(1024).optional(),
22142
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
22143
+ }).optional(),
22133
22144
  effectiveModel: harnessModelRefSchema.optional(),
22134
22145
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
22135
22146
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -22156,6 +22167,21 @@ var clientChannelResponseSchema = external_exports.object({
22156
22167
  result: record2
22157
22168
  });
22158
22169
 
22170
+ // ../../shared-contracts/dist/thread-catalog.js
22171
+ var threadCatalogReadParamsSchema = external_exports.object({
22172
+ includeArchived: external_exports.boolean().optional(),
22173
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
22174
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
22175
+ }).strict();
22176
+ var threadCatalogReadResultSchema = external_exports.object({
22177
+ threads: external_exports.array(jsonObjectSchema),
22178
+ ownership: external_exports.array(threadOwnershipSchema),
22179
+ /** Known archived IDs, including visible local external records even when their rows are
22180
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
22181
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
22182
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
22183
+ }).strict();
22184
+
22159
22185
  // ../../shared-contracts/dist/voice.js
22160
22186
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
22161
22187
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -22368,96 +22394,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
22368
22394
  });
22369
22395
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
22370
22396
  enabled: false,
22371
- timeoutMinutes: 30
22372
- });
22373
-
22374
- // ../../shared-contracts/dist/harness-plugins.js
22375
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
22376
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
22377
- var HARNESS_PLUGIN_LIMIT = 128;
22378
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
22379
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
22380
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
22381
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
22382
- 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");
22383
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
22384
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
22385
- var harnessInstallationGuideSchema = external_exports.object({
22386
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
22387
- before: localizedTextSchema.optional(),
22388
- after: localizedTextSchema.optional(),
22389
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
22390
- }).strict();
22391
- var pluginPresentationShape = {
22392
- id: installedHarnessPluginIdSchema,
22393
- name: external_exports.string().trim().min(1).max(128),
22394
- version: external_exports.string().min(1).max(128),
22395
- /** Capability-only plugin; omitted for existing session-capable plugins. */
22396
- kind: external_exports.literal("usage").optional(),
22397
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
22398
- iconStyle: external_exports.object({
22399
- vector: external_exports.object({
22400
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
22401
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
22402
- paths: external_exports.array(external_exports.object({
22403
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
22404
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
22405
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
22406
- }).strict()).min(1).max(32)
22407
- }).strict().optional(),
22408
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
22409
- borderRadius: external_exports.number().min(0).max(50).optional(),
22410
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
22411
- }).strict().optional(),
22412
- installation: harnessInstallationGuideSchema.optional(),
22413
- notice: localizedTextSchema.optional(),
22414
- /** The factory accepts a persisted local entrypoint through its construction context. */
22415
- launchCommand: external_exports.literal(true).optional(),
22416
- links: external_exports.object({
22417
- website: documentationUrlSchema.optional(),
22418
- documentation: documentationUrlSchema.optional(),
22419
- installation: documentationUrlSchema.optional()
22420
- }).strict().optional()
22421
- };
22422
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
22423
- message: "Plugin surfaces must be unique"
22424
- });
22425
- var harnessPluginManifestSchema = external_exports.object({
22426
- manifestVersion: external_exports.literal(1),
22427
- ...pluginPresentationShape,
22428
- adapterApiVersion: external_exports.number().int().positive(),
22429
- entry: relativeResourceSchema,
22430
- icon: relativeResourceSchema.optional(),
22431
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
22432
- surfaces: harnessPluginSurfacesSchema.optional()
22433
- }).strict();
22434
- 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);
22435
- var harnessPluginDescriptorSchema = external_exports.object({
22436
- ...pluginPresentationShape,
22437
- icon: harnessPluginIconSchema.optional()
22438
- }).strict();
22439
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
22440
- var harnessPluginListResultSchema = external_exports.object({
22441
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
22442
- }).strict();
22443
- var harnessPluginConfigurationSchema = external_exports.object({
22444
- version: external_exports.literal(1),
22445
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
22446
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
22447
- message: "Enabled plugin IDs must be unique",
22448
- path: ["enabled"]
22397
+ timeoutMinutes: 10
22449
22398
  });
22450
22399
 
22451
22400
  // ../../shared-contracts/dist/harness-preferences.js
22452
22401
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
22453
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
22402
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
22454
22403
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
22455
22404
  model: harnessModelRefSchema.optional(),
22456
22405
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
22457
22406
  permissionModeId: harnessPermissionModeIdSchema.optional()
22458
22407
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
22459
22408
  var newThreadDefaultsSchema = external_exports.strictObject({
22460
- lastHarness: installedHarnessPluginIdSchema.optional(),
22409
+ lastHarness: harnessIdSchema.optional(),
22461
22410
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
22462
22411
  });
22463
22412
  var modelId = external_exports.string().min(1).max(1024);
@@ -22478,19 +22427,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
22478
22427
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
22479
22428
  external_exports.strictObject({
22480
22429
  kind: external_exports.literal("favorite"),
22481
- harnessId: installedHarnessPluginIdSchema,
22430
+ harnessId: harnessIdSchema,
22482
22431
  modelId,
22483
22432
  enabled: external_exports.boolean()
22484
22433
  }),
22485
22434
  external_exports.strictObject({
22486
22435
  kind: external_exports.literal("favorites"),
22487
- harnessId: installedHarnessPluginIdSchema,
22436
+ harnessId: harnessIdSchema,
22488
22437
  modelIds: external_exports.array(modelId).max(2048)
22489
22438
  }),
22490
22439
  external_exports.strictObject({
22491
22440
  kind: external_exports.literal("newThread"),
22492
- lastHarness: installedHarnessPluginIdSchema.optional(),
22493
- harnessId: installedHarnessPluginIdSchema.optional(),
22441
+ lastHarness: harnessIdSchema.optional(),
22442
+ harnessId: harnessIdSchema.optional(),
22494
22443
  configuration: harnessDefaultConfigurationSchema.optional()
22495
22444
  })
22496
22445
  ]);
@@ -22506,12 +22455,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
22506
22455
  code: "custom",
22507
22456
  message: "A default Harness or complete configuration is required"
22508
22457
  });
22509
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
22510
- if (harnessId === "codex")
22511
- ctx.addIssue({
22512
- code: "custom",
22513
- message: "Official Codex is not an external Harness"
22514
- });
22515
22458
  }
22516
22459
  });
22517
22460
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -22888,6 +22831,76 @@ var harnessAccountListResultSchema = external_exports.object({
22888
22831
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
22889
22832
  }).strict();
22890
22833
 
22834
+ // ../../shared-contracts/dist/harness-plugins.js
22835
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
22836
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
22837
+ var HARNESS_PLUGIN_LIMIT = 128;
22838
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
22839
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
22840
+ 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");
22841
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
22842
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
22843
+ var harnessInstallationGuideSchema = external_exports.object({
22844
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
22845
+ before: localizedTextSchema.optional(),
22846
+ after: localizedTextSchema.optional(),
22847
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
22848
+ }).strict();
22849
+ var pluginPresentationShape = {
22850
+ id: installedHarnessPluginIdSchema,
22851
+ name: external_exports.string().trim().min(1).max(128),
22852
+ version: external_exports.string().min(1).max(128),
22853
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
22854
+ kind: external_exports.literal("usage").optional(),
22855
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
22856
+ iconStyle: external_exports.object({
22857
+ vector: external_exports.object({
22858
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
22859
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
22860
+ paths: external_exports.array(external_exports.object({
22861
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
22862
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
22863
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
22864
+ }).strict()).min(1).max(32)
22865
+ }).strict().optional(),
22866
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
22867
+ borderRadius: external_exports.number().min(0).max(50).optional(),
22868
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
22869
+ }).strict().optional(),
22870
+ installation: harnessInstallationGuideSchema.optional(),
22871
+ notice: localizedTextSchema.optional(),
22872
+ /** The factory accepts a persisted local entrypoint through its construction context. */
22873
+ launchCommand: external_exports.literal(true).optional(),
22874
+ links: external_exports.object({
22875
+ website: documentationUrlSchema.optional(),
22876
+ documentation: documentationUrlSchema.optional(),
22877
+ installation: documentationUrlSchema.optional()
22878
+ }).strict().optional()
22879
+ };
22880
+ var harnessPluginManifestSchema = external_exports.object({
22881
+ manifestVersion: external_exports.literal(1),
22882
+ ...pluginPresentationShape,
22883
+ adapterApiVersion: external_exports.number().int().positive(),
22884
+ entry: relativeResourceSchema,
22885
+ icon: relativeResourceSchema.optional()
22886
+ }).strict();
22887
+ 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);
22888
+ var harnessPluginDescriptorSchema = external_exports.object({
22889
+ ...pluginPresentationShape,
22890
+ icon: harnessPluginIconSchema.optional()
22891
+ }).strict();
22892
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
22893
+ var harnessPluginListResultSchema = external_exports.object({
22894
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
22895
+ }).strict();
22896
+ var harnessPluginConfigurationSchema = external_exports.object({
22897
+ version: external_exports.literal(1),
22898
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
22899
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
22900
+ message: "Enabled plugin IDs must be unique",
22901
+ path: ["enabled"]
22902
+ });
22903
+
22891
22904
  // ../../shared-contracts/dist/harness-route.js
22892
22905
  var harnessPluginRouteSchema = external_exports.object({
22893
22906
  harnessId: harnessPluginIdSchema,
@@ -23081,6 +23094,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
23081
23094
  }).strict();
23082
23095
  var harnessCommandCatalogSchema = external_exports.object({
23083
23096
  commands: external_exports.array(harnessCommandDescriptorSchema),
23097
+ /** Partial discovery failures; valid commands remain available. */
23098
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
23084
23099
  /**
23085
23100
  * `live` when the catalog includes what a native Session reports for its
23086
23101
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -23116,7 +23131,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
23116
23131
  }).strict();
23117
23132
  var threadCommandExecuteResultSchema = external_exports.object({
23118
23133
  accepted: external_exports.literal(true),
23119
- turnId: hostTurnIdSchema
23134
+ turnId: hostTurnIdSchema.optional()
23120
23135
  }).strict();
23121
23136
 
23122
23137
  // ../../shared-contracts/dist/json-rpc.js