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

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 (58) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +103 -93
  4. package/app/console-web.js +104 -94
  5. package/app/desktop-controller.mjs +103 -109
  6. package/app/host-runtime.mjs +10067 -8374
  7. package/app/plugins/antigravity/plugin.mjs +103 -93
  8. package/app/plugins/claude-code/plugin.mjs +103 -93
  9. package/app/plugins/codebuddy/plugin.mjs +103 -93
  10. package/app/plugins/codex-usage/plugin.mjs +103 -93
  11. package/app/plugins/copilot/plugin.mjs +103 -93
  12. package/app/plugins/cursor-cli/plugin.mjs +103 -93
  13. package/app/plugins/deepseek-harness/plugin.mjs +103 -93
  14. package/app/plugins/devin/plugin.mjs +103 -93
  15. package/app/plugins/enabled.json +0 -1
  16. package/app/plugins/grok/plugin.mjs +103 -93
  17. package/app/plugins/hermes/plugin.mjs +103 -93
  18. package/app/plugins/kimi-code/plugin.mjs +103 -93
  19. package/app/plugins/kiro-cli/plugin.mjs +103 -93
  20. package/app/plugins/omp/plugin.mjs +103 -93
  21. package/app/plugins/opencode/plugin.mjs +103 -93
  22. package/app/plugins/pi/plugin.mjs +103 -93
  23. package/app/plugins/qoder/plugin.mjs +103 -93
  24. package/app/plugins/qoder-cn/plugin.mjs +103 -93
  25. package/app/plugins/qwen-code/plugin.mjs +103 -93
  26. package/app/plugins/workbuddy/plugin.mjs +103 -93
  27. package/app/plugins/zcode/plugin.mjs +103 -93
  28. package/app/renderer-extension.js +122 -149
  29. package/app/web/assets/index-C3lniEH1.css +1 -0
  30. package/app/web/assets/index-aKvkfNJN.js +199 -0
  31. package/app/web/codexhost-settings.js +104 -94
  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-ui-chat/client.js +2 -2
  37. package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +63 -62
  38. package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +85 -85
  39. package/app/web/plugins/deepseek-ai__dsh-client-ui-directory-picker-browse/client.js +10 -10
  40. package/app/web/plugins/deepseek-ai__dsh-client-ui-input-trigger/client.js +1 -1
  41. package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +3 -3
  42. package/app/web/plugins/deepseek-ai__dsh-client-ui-model-selection/client.js +2 -2
  43. package/app/web/plugins/deepseek-ai__dsh-client-ui-permission-presets/client.js +1 -1
  44. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +1 -1
  45. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar-right/client.js +55 -55
  46. package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +18 -18
  47. package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -8
  48. package/app/web/sw.js +55 -24
  49. package/app/web-modules/server.mjs +1091 -680
  50. package/bin/codexhost +0 -0
  51. package/libexec/codexhost-shim +0 -0
  52. package/libexec/codexhost-updater +0 -0
  53. package/package.json +1 -1
  54. package/app/plugins/codex-cli/manifest.json +0 -16
  55. package/app/plugins/codex-cli/plugin.mjs +0 -20374
  56. package/app/web/assets/index-CIeTchMu.css +0 -1
  57. package/app/web/assets/index-DeAPBQbV.js +0 -199
  58. /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,16 @@ 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({ includeArchived: external_exports.boolean().optional() }).strict();
27867
+ var threadCatalogReadResultSchema = external_exports.object({
27868
+ threads: external_exports.array(jsonObjectSchema),
27869
+ ownership: external_exports.array(threadOwnershipSchema),
27870
+ /** Known archived IDs, including visible local external records even when their rows are
27871
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
27872
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
27873
+ }).strict();
27874
+
27854
27875
  // ../../shared-contracts/dist/voice.js
27855
27876
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
27856
27877
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -28066,93 +28087,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
28066
28087
  timeoutMinutes: 30
28067
28088
  });
28068
28089
 
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"]
28144
- });
28145
-
28146
28090
  // ../../shared-contracts/dist/harness-preferences.js
28147
28091
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
28148
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id3) => String(id3));
28092
+ var preferenceHarnessKey = harnessIdSchema.transform((id3) => String(id3));
28149
28093
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
28150
28094
  model: harnessModelRefSchema.optional(),
28151
28095
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
28152
28096
  permissionModeId: harnessPermissionModeIdSchema.optional()
28153
28097
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
28154
28098
  var newThreadDefaultsSchema = external_exports.strictObject({
28155
- lastHarness: installedHarnessPluginIdSchema.optional(),
28099
+ lastHarness: harnessIdSchema.optional(),
28156
28100
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
28157
28101
  });
28158
28102
  var modelId = external_exports.string().min(1).max(1024);
@@ -28173,19 +28117,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
28173
28117
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
28174
28118
  external_exports.strictObject({
28175
28119
  kind: external_exports.literal("favorite"),
28176
- harnessId: installedHarnessPluginIdSchema,
28120
+ harnessId: harnessIdSchema,
28177
28121
  modelId,
28178
28122
  enabled: external_exports.boolean()
28179
28123
  }),
28180
28124
  external_exports.strictObject({
28181
28125
  kind: external_exports.literal("favorites"),
28182
- harnessId: installedHarnessPluginIdSchema,
28126
+ harnessId: harnessIdSchema,
28183
28127
  modelIds: external_exports.array(modelId).max(2048)
28184
28128
  }),
28185
28129
  external_exports.strictObject({
28186
28130
  kind: external_exports.literal("newThread"),
28187
- lastHarness: installedHarnessPluginIdSchema.optional(),
28188
- harnessId: installedHarnessPluginIdSchema.optional(),
28131
+ lastHarness: harnessIdSchema.optional(),
28132
+ harnessId: harnessIdSchema.optional(),
28189
28133
  configuration: harnessDefaultConfigurationSchema.optional()
28190
28134
  })
28191
28135
  ]);
@@ -28201,12 +28145,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
28201
28145
  code: "custom",
28202
28146
  message: "A default Harness or complete configuration is required"
28203
28147
  });
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
28148
  }
28211
28149
  });
28212
28150
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -28583,6 +28521,76 @@ var harnessAccountListResultSchema = external_exports.object({
28583
28521
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
28584
28522
  }).strict();
28585
28523
 
28524
+ // ../../shared-contracts/dist/harness-plugins.js
28525
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
28526
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
28527
+ var HARNESS_PLUGIN_LIMIT = 128;
28528
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
28529
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id3) => id3 !== "codex", "The official Codex identity is reserved");
28530
+ 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");
28531
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
28532
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
28533
+ var harnessInstallationGuideSchema = external_exports.object({
28534
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
28535
+ before: localizedTextSchema.optional(),
28536
+ after: localizedTextSchema.optional(),
28537
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
28538
+ }).strict();
28539
+ var pluginPresentationShape = {
28540
+ id: installedHarnessPluginIdSchema,
28541
+ name: external_exports.string().trim().min(1).max(128),
28542
+ version: external_exports.string().min(1).max(128),
28543
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
28544
+ kind: external_exports.literal("usage").optional(),
28545
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
28546
+ iconStyle: external_exports.object({
28547
+ vector: external_exports.object({
28548
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
28549
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
28550
+ paths: external_exports.array(external_exports.object({
28551
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
28552
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
28553
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
28554
+ }).strict()).min(1).max(32)
28555
+ }).strict().optional(),
28556
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
28557
+ borderRadius: external_exports.number().min(0).max(50).optional(),
28558
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
28559
+ }).strict().optional(),
28560
+ installation: harnessInstallationGuideSchema.optional(),
28561
+ notice: localizedTextSchema.optional(),
28562
+ /** The factory accepts a persisted local entrypoint through its construction context. */
28563
+ launchCommand: external_exports.literal(true).optional(),
28564
+ links: external_exports.object({
28565
+ website: documentationUrlSchema.optional(),
28566
+ documentation: documentationUrlSchema.optional(),
28567
+ installation: documentationUrlSchema.optional()
28568
+ }).strict().optional()
28569
+ };
28570
+ var harnessPluginManifestSchema = external_exports.object({
28571
+ manifestVersion: external_exports.literal(1),
28572
+ ...pluginPresentationShape,
28573
+ adapterApiVersion: external_exports.number().int().positive(),
28574
+ entry: relativeResourceSchema,
28575
+ icon: relativeResourceSchema.optional()
28576
+ }).strict();
28577
+ 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);
28578
+ var harnessPluginDescriptorSchema = external_exports.object({
28579
+ ...pluginPresentationShape,
28580
+ icon: harnessPluginIconSchema.optional()
28581
+ }).strict();
28582
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
28583
+ var harnessPluginListResultSchema = external_exports.object({
28584
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
28585
+ }).strict();
28586
+ var harnessPluginConfigurationSchema = external_exports.object({
28587
+ version: external_exports.literal(1),
28588
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
28589
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
28590
+ message: "Enabled plugin IDs must be unique",
28591
+ path: ["enabled"]
28592
+ });
28593
+
28586
28594
  // ../../shared-contracts/dist/harness-route.js
28587
28595
  var harnessPluginRouteSchema = external_exports.object({
28588
28596
  harnessId: harnessPluginIdSchema,
@@ -28776,6 +28784,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
28776
28784
  }).strict();
28777
28785
  var harnessCommandCatalogSchema = external_exports.object({
28778
28786
  commands: external_exports.array(harnessCommandDescriptorSchema),
28787
+ /** Partial discovery failures; valid commands remain available. */
28788
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
28779
28789
  /**
28780
28790
  * `live` when the catalog includes what a native Session reports for its
28781
28791
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -28811,7 +28821,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
28811
28821
  }).strict();
28812
28822
  var threadCommandExecuteResultSchema = external_exports.object({
28813
28823
  accepted: external_exports.literal(true),
28814
- turnId: hostTurnIdSchema
28824
+ turnId: hostTurnIdSchema.optional()
28815
28825
  }).strict();
28816
28826
 
28817
28827
  // ../../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,16 @@ 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({ includeArchived: external_exports.boolean().optional() }).strict();
22172
+ var threadCatalogReadResultSchema = external_exports.object({
22173
+ threads: external_exports.array(jsonObjectSchema),
22174
+ ownership: external_exports.array(threadOwnershipSchema),
22175
+ /** Known archived IDs, including visible local external records even when their rows are
22176
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
22177
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
22178
+ }).strict();
22179
+
22159
22180
  // ../../shared-contracts/dist/voice.js
22160
22181
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
22161
22182
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -22371,93 +22392,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
22371
22392
  timeoutMinutes: 30
22372
22393
  });
22373
22394
 
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"]
22449
- });
22450
-
22451
22395
  // ../../shared-contracts/dist/harness-preferences.js
22452
22396
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
22453
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
22397
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
22454
22398
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
22455
22399
  model: harnessModelRefSchema.optional(),
22456
22400
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
22457
22401
  permissionModeId: harnessPermissionModeIdSchema.optional()
22458
22402
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
22459
22403
  var newThreadDefaultsSchema = external_exports.strictObject({
22460
- lastHarness: installedHarnessPluginIdSchema.optional(),
22404
+ lastHarness: harnessIdSchema.optional(),
22461
22405
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
22462
22406
  });
22463
22407
  var modelId = external_exports.string().min(1).max(1024);
@@ -22478,19 +22422,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
22478
22422
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
22479
22423
  external_exports.strictObject({
22480
22424
  kind: external_exports.literal("favorite"),
22481
- harnessId: installedHarnessPluginIdSchema,
22425
+ harnessId: harnessIdSchema,
22482
22426
  modelId,
22483
22427
  enabled: external_exports.boolean()
22484
22428
  }),
22485
22429
  external_exports.strictObject({
22486
22430
  kind: external_exports.literal("favorites"),
22487
- harnessId: installedHarnessPluginIdSchema,
22431
+ harnessId: harnessIdSchema,
22488
22432
  modelIds: external_exports.array(modelId).max(2048)
22489
22433
  }),
22490
22434
  external_exports.strictObject({
22491
22435
  kind: external_exports.literal("newThread"),
22492
- lastHarness: installedHarnessPluginIdSchema.optional(),
22493
- harnessId: installedHarnessPluginIdSchema.optional(),
22436
+ lastHarness: harnessIdSchema.optional(),
22437
+ harnessId: harnessIdSchema.optional(),
22494
22438
  configuration: harnessDefaultConfigurationSchema.optional()
22495
22439
  })
22496
22440
  ]);
@@ -22506,12 +22450,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
22506
22450
  code: "custom",
22507
22451
  message: "A default Harness or complete configuration is required"
22508
22452
  });
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
22453
  }
22516
22454
  });
22517
22455
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -22888,6 +22826,76 @@ var harnessAccountListResultSchema = external_exports.object({
22888
22826
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
22889
22827
  }).strict();
22890
22828
 
22829
+ // ../../shared-contracts/dist/harness-plugins.js
22830
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
22831
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
22832
+ var HARNESS_PLUGIN_LIMIT = 128;
22833
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
22834
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
22835
+ 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");
22836
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
22837
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
22838
+ var harnessInstallationGuideSchema = external_exports.object({
22839
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
22840
+ before: localizedTextSchema.optional(),
22841
+ after: localizedTextSchema.optional(),
22842
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
22843
+ }).strict();
22844
+ var pluginPresentationShape = {
22845
+ id: installedHarnessPluginIdSchema,
22846
+ name: external_exports.string().trim().min(1).max(128),
22847
+ version: external_exports.string().min(1).max(128),
22848
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
22849
+ kind: external_exports.literal("usage").optional(),
22850
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
22851
+ iconStyle: external_exports.object({
22852
+ vector: external_exports.object({
22853
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
22854
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
22855
+ paths: external_exports.array(external_exports.object({
22856
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
22857
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
22858
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
22859
+ }).strict()).min(1).max(32)
22860
+ }).strict().optional(),
22861
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
22862
+ borderRadius: external_exports.number().min(0).max(50).optional(),
22863
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
22864
+ }).strict().optional(),
22865
+ installation: harnessInstallationGuideSchema.optional(),
22866
+ notice: localizedTextSchema.optional(),
22867
+ /** The factory accepts a persisted local entrypoint through its construction context. */
22868
+ launchCommand: external_exports.literal(true).optional(),
22869
+ links: external_exports.object({
22870
+ website: documentationUrlSchema.optional(),
22871
+ documentation: documentationUrlSchema.optional(),
22872
+ installation: documentationUrlSchema.optional()
22873
+ }).strict().optional()
22874
+ };
22875
+ var harnessPluginManifestSchema = external_exports.object({
22876
+ manifestVersion: external_exports.literal(1),
22877
+ ...pluginPresentationShape,
22878
+ adapterApiVersion: external_exports.number().int().positive(),
22879
+ entry: relativeResourceSchema,
22880
+ icon: relativeResourceSchema.optional()
22881
+ }).strict();
22882
+ 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);
22883
+ var harnessPluginDescriptorSchema = external_exports.object({
22884
+ ...pluginPresentationShape,
22885
+ icon: harnessPluginIconSchema.optional()
22886
+ }).strict();
22887
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
22888
+ var harnessPluginListResultSchema = external_exports.object({
22889
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
22890
+ }).strict();
22891
+ var harnessPluginConfigurationSchema = external_exports.object({
22892
+ version: external_exports.literal(1),
22893
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
22894
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
22895
+ message: "Enabled plugin IDs must be unique",
22896
+ path: ["enabled"]
22897
+ });
22898
+
22891
22899
  // ../../shared-contracts/dist/harness-route.js
22892
22900
  var harnessPluginRouteSchema = external_exports.object({
22893
22901
  harnessId: harnessPluginIdSchema,
@@ -23081,6 +23089,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
23081
23089
  }).strict();
23082
23090
  var harnessCommandCatalogSchema = external_exports.object({
23083
23091
  commands: external_exports.array(harnessCommandDescriptorSchema),
23092
+ /** Partial discovery failures; valid commands remain available. */
23093
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
23084
23094
  /**
23085
23095
  * `live` when the catalog includes what a native Session reports for its
23086
23096
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -23116,7 +23126,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
23116
23126
  }).strict();
23117
23127
  var threadCommandExecuteResultSchema = external_exports.object({
23118
23128
  accepted: external_exports.literal(true),
23119
- turnId: hostTurnIdSchema
23129
+ turnId: hostTurnIdSchema.optional()
23120
23130
  }).strict();
23121
23131
 
23122
23132
  // ../../shared-contracts/dist/json-rpc.js