@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
@@ -15165,7 +15165,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15165
15165
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15166
15166
  message: "Value must not be empty or whitespace"
15167
15167
  });
15168
- 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();
15168
+ 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();
15169
15169
  var harnessPermissionModeSchema = external_exports.object({
15170
15170
  id: harnessPermissionModeIdSchema,
15171
15171
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15549,7 +15549,12 @@ var threadInspectionParamsSchema = external_exports.object({
15549
15549
  }).strict();
15550
15550
  var codexThreadInspectionSchema = external_exports.object({
15551
15551
  owner: external_exports.literal("codex"),
15552
- locked: external_exports.literal(true),
15552
+ locked: external_exports.boolean(),
15553
+ effectiveModel: harnessModelRefSchema.optional(),
15554
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15555
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15556
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15557
+ history: harnessHistoryCapabilitiesSchema.optional(),
15553
15558
  supportsThreadReferences: external_exports.literal(true).optional()
15554
15559
  }).strict();
15555
15560
  var externalThreadInspectionSchema = external_exports.object({
@@ -15771,7 +15776,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15771
15776
  thread: external_exports.object({
15772
15777
  id: external_exports.string().min(1),
15773
15778
  cwd: external_exports.string(),
15774
- modelProvider: external_exports.literal("codexhost"),
15779
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15780
+ modelProvider: external_exports.string().min(1),
15775
15781
  createdAt: external_exports.number(),
15776
15782
  updatedAt: external_exports.number(),
15777
15783
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15785,6 +15791,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15785
15791
  nextCursor: external_exports.string().nullable()
15786
15792
  }),
15787
15793
  configuration: external_exports.object({
15794
+ /** Native Codex model names are not external Harness transport refs. */
15795
+ native: external_exports.object({
15796
+ model: external_exports.string().min(1).max(1024).optional(),
15797
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15798
+ }).optional(),
15788
15799
  effectiveModel: harnessModelRefSchema.optional(),
15789
15800
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15790
15801
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15811,6 +15822,21 @@ var clientChannelResponseSchema = external_exports.object({
15811
15822
  result: record2
15812
15823
  });
15813
15824
 
15825
+ // ../../shared-contracts/dist/thread-catalog.js
15826
+ var threadCatalogReadParamsSchema = external_exports.object({
15827
+ includeArchived: external_exports.boolean().optional(),
15828
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15829
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15830
+ }).strict();
15831
+ var threadCatalogReadResultSchema = external_exports.object({
15832
+ threads: external_exports.array(jsonObjectSchema),
15833
+ ownership: external_exports.array(threadOwnershipSchema),
15834
+ /** Known archived IDs, including visible local external records even when their rows are
15835
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15836
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15837
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15838
+ }).strict();
15839
+
15814
15840
  // ../../shared-contracts/dist/voice.js
15815
15841
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15816
15842
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16023,96 +16049,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
16023
16049
  });
16024
16050
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16025
16051
  enabled: false,
16026
- timeoutMinutes: 30
16027
- });
16028
-
16029
- // ../../shared-contracts/dist/harness-plugins.js
16030
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16031
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16032
- var HARNESS_PLUGIN_LIMIT = 128;
16033
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16034
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16035
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16036
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16037
- 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");
16038
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16039
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16040
- var harnessInstallationGuideSchema = external_exports.object({
16041
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16042
- before: localizedTextSchema.optional(),
16043
- after: localizedTextSchema.optional(),
16044
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16045
- }).strict();
16046
- var pluginPresentationShape = {
16047
- id: installedHarnessPluginIdSchema,
16048
- name: external_exports.string().trim().min(1).max(128),
16049
- version: external_exports.string().min(1).max(128),
16050
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16051
- kind: external_exports.literal("usage").optional(),
16052
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16053
- iconStyle: external_exports.object({
16054
- vector: external_exports.object({
16055
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16056
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16057
- paths: external_exports.array(external_exports.object({
16058
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16059
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16060
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16061
- }).strict()).min(1).max(32)
16062
- }).strict().optional(),
16063
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16064
- borderRadius: external_exports.number().min(0).max(50).optional(),
16065
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16066
- }).strict().optional(),
16067
- installation: harnessInstallationGuideSchema.optional(),
16068
- notice: localizedTextSchema.optional(),
16069
- /** The factory accepts a persisted local entrypoint through its construction context. */
16070
- launchCommand: external_exports.literal(true).optional(),
16071
- links: external_exports.object({
16072
- website: documentationUrlSchema.optional(),
16073
- documentation: documentationUrlSchema.optional(),
16074
- installation: documentationUrlSchema.optional()
16075
- }).strict().optional()
16076
- };
16077
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16078
- message: "Plugin surfaces must be unique"
16079
- });
16080
- var harnessPluginManifestSchema = external_exports.object({
16081
- manifestVersion: external_exports.literal(1),
16082
- ...pluginPresentationShape,
16083
- adapterApiVersion: external_exports.number().int().positive(),
16084
- entry: relativeResourceSchema,
16085
- icon: relativeResourceSchema.optional(),
16086
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16087
- surfaces: harnessPluginSurfacesSchema.optional()
16088
- }).strict();
16089
- 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);
16090
- var harnessPluginDescriptorSchema = external_exports.object({
16091
- ...pluginPresentationShape,
16092
- icon: harnessPluginIconSchema.optional()
16093
- }).strict();
16094
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16095
- var harnessPluginListResultSchema = external_exports.object({
16096
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16097
- }).strict();
16098
- var harnessPluginConfigurationSchema = external_exports.object({
16099
- version: external_exports.literal(1),
16100
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16101
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16102
- message: "Enabled plugin IDs must be unique",
16103
- path: ["enabled"]
16052
+ timeoutMinutes: 10
16104
16053
  });
16105
16054
 
16106
16055
  // ../../shared-contracts/dist/harness-preferences.js
16107
16056
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16108
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16057
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16109
16058
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16110
16059
  model: harnessModelRefSchema.optional(),
16111
16060
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16112
16061
  permissionModeId: harnessPermissionModeIdSchema.optional()
16113
16062
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16114
16063
  var newThreadDefaultsSchema = external_exports.strictObject({
16115
- lastHarness: installedHarnessPluginIdSchema.optional(),
16064
+ lastHarness: harnessIdSchema.optional(),
16116
16065
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16117
16066
  });
16118
16067
  var modelId = external_exports.string().min(1).max(1024);
@@ -16133,19 +16082,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16133
16082
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16134
16083
  external_exports.strictObject({
16135
16084
  kind: external_exports.literal("favorite"),
16136
- harnessId: installedHarnessPluginIdSchema,
16085
+ harnessId: harnessIdSchema,
16137
16086
  modelId,
16138
16087
  enabled: external_exports.boolean()
16139
16088
  }),
16140
16089
  external_exports.strictObject({
16141
16090
  kind: external_exports.literal("favorites"),
16142
- harnessId: installedHarnessPluginIdSchema,
16091
+ harnessId: harnessIdSchema,
16143
16092
  modelIds: external_exports.array(modelId).max(2048)
16144
16093
  }),
16145
16094
  external_exports.strictObject({
16146
16095
  kind: external_exports.literal("newThread"),
16147
- lastHarness: installedHarnessPluginIdSchema.optional(),
16148
- harnessId: installedHarnessPluginIdSchema.optional(),
16096
+ lastHarness: harnessIdSchema.optional(),
16097
+ harnessId: harnessIdSchema.optional(),
16149
16098
  configuration: harnessDefaultConfigurationSchema.optional()
16150
16099
  })
16151
16100
  ]);
@@ -16161,12 +16110,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16161
16110
  code: "custom",
16162
16111
  message: "A default Harness or complete configuration is required"
16163
16112
  });
16164
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16165
- if (harnessId === "codex")
16166
- ctx.addIssue({
16167
- code: "custom",
16168
- message: "Official Codex is not an external Harness"
16169
- });
16170
16113
  }
16171
16114
  });
16172
16115
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16543,6 +16486,76 @@ var harnessAccountListResultSchema = external_exports.object({
16543
16486
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16544
16487
  }).strict();
16545
16488
 
16489
+ // ../../shared-contracts/dist/harness-plugins.js
16490
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16491
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16492
+ var HARNESS_PLUGIN_LIMIT = 128;
16493
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16494
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16495
+ 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");
16496
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16497
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16498
+ var harnessInstallationGuideSchema = external_exports.object({
16499
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16500
+ before: localizedTextSchema.optional(),
16501
+ after: localizedTextSchema.optional(),
16502
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16503
+ }).strict();
16504
+ var pluginPresentationShape = {
16505
+ id: installedHarnessPluginIdSchema,
16506
+ name: external_exports.string().trim().min(1).max(128),
16507
+ version: external_exports.string().min(1).max(128),
16508
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16509
+ kind: external_exports.literal("usage").optional(),
16510
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16511
+ iconStyle: external_exports.object({
16512
+ vector: external_exports.object({
16513
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16514
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16515
+ paths: external_exports.array(external_exports.object({
16516
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16517
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16518
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16519
+ }).strict()).min(1).max(32)
16520
+ }).strict().optional(),
16521
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16522
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16523
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16524
+ }).strict().optional(),
16525
+ installation: harnessInstallationGuideSchema.optional(),
16526
+ notice: localizedTextSchema.optional(),
16527
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16528
+ launchCommand: external_exports.literal(true).optional(),
16529
+ links: external_exports.object({
16530
+ website: documentationUrlSchema.optional(),
16531
+ documentation: documentationUrlSchema.optional(),
16532
+ installation: documentationUrlSchema.optional()
16533
+ }).strict().optional()
16534
+ };
16535
+ var harnessPluginManifestSchema = external_exports.object({
16536
+ manifestVersion: external_exports.literal(1),
16537
+ ...pluginPresentationShape,
16538
+ adapterApiVersion: external_exports.number().int().positive(),
16539
+ entry: relativeResourceSchema,
16540
+ icon: relativeResourceSchema.optional()
16541
+ }).strict();
16542
+ 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);
16543
+ var harnessPluginDescriptorSchema = external_exports.object({
16544
+ ...pluginPresentationShape,
16545
+ icon: harnessPluginIconSchema.optional()
16546
+ }).strict();
16547
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16548
+ var harnessPluginListResultSchema = external_exports.object({
16549
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16550
+ }).strict();
16551
+ var harnessPluginConfigurationSchema = external_exports.object({
16552
+ version: external_exports.literal(1),
16553
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16554
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16555
+ message: "Enabled plugin IDs must be unique",
16556
+ path: ["enabled"]
16557
+ });
16558
+
16546
16559
  // ../../shared-contracts/dist/harness-route.js
16547
16560
  var harnessPluginRouteSchema = external_exports.object({
16548
16561
  harnessId: harnessPluginIdSchema,
@@ -16736,6 +16749,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16736
16749
  }).strict();
16737
16750
  var harnessCommandCatalogSchema = external_exports.object({
16738
16751
  commands: external_exports.array(harnessCommandDescriptorSchema),
16752
+ /** Partial discovery failures; valid commands remain available. */
16753
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16739
16754
  /**
16740
16755
  * `live` when the catalog includes what a native Session reports for its
16741
16756
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16771,7 +16786,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16771
16786
  }).strict();
16772
16787
  var threadCommandExecuteResultSchema = external_exports.object({
16773
16788
  accepted: external_exports.literal(true),
16774
- turnId: hostTurnIdSchema
16789
+ turnId: hostTurnIdSchema.optional()
16775
16790
  }).strict();
16776
16791
 
16777
16792
  // ../../shared-contracts/dist/json-rpc.js
@@ -15162,7 +15162,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15162
15162
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15163
15163
  message: "Value must not be empty or whitespace"
15164
15164
  });
15165
- 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();
15165
+ 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();
15166
15166
  var harnessPermissionModeSchema = external_exports.object({
15167
15167
  id: harnessPermissionModeIdSchema,
15168
15168
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15546,7 +15546,12 @@ var threadInspectionParamsSchema = external_exports.object({
15546
15546
  }).strict();
15547
15547
  var codexThreadInspectionSchema = external_exports.object({
15548
15548
  owner: external_exports.literal("codex"),
15549
- locked: external_exports.literal(true),
15549
+ locked: external_exports.boolean(),
15550
+ effectiveModel: harnessModelRefSchema.optional(),
15551
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15552
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15553
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15554
+ history: harnessHistoryCapabilitiesSchema.optional(),
15550
15555
  supportsThreadReferences: external_exports.literal(true).optional()
15551
15556
  }).strict();
15552
15557
  var externalThreadInspectionSchema = external_exports.object({
@@ -15768,7 +15773,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15768
15773
  thread: external_exports.object({
15769
15774
  id: external_exports.string().min(1),
15770
15775
  cwd: external_exports.string(),
15771
- modelProvider: external_exports.literal("codexhost"),
15776
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15777
+ modelProvider: external_exports.string().min(1),
15772
15778
  createdAt: external_exports.number(),
15773
15779
  updatedAt: external_exports.number(),
15774
15780
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15782,6 +15788,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15782
15788
  nextCursor: external_exports.string().nullable()
15783
15789
  }),
15784
15790
  configuration: external_exports.object({
15791
+ /** Native Codex model names are not external Harness transport refs. */
15792
+ native: external_exports.object({
15793
+ model: external_exports.string().min(1).max(1024).optional(),
15794
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15795
+ }).optional(),
15785
15796
  effectiveModel: harnessModelRefSchema.optional(),
15786
15797
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15787
15798
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15808,6 +15819,21 @@ var clientChannelResponseSchema = external_exports.object({
15808
15819
  result: record2
15809
15820
  });
15810
15821
 
15822
+ // ../../shared-contracts/dist/thread-catalog.js
15823
+ var threadCatalogReadParamsSchema = external_exports.object({
15824
+ includeArchived: external_exports.boolean().optional(),
15825
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15826
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15827
+ }).strict();
15828
+ var threadCatalogReadResultSchema = external_exports.object({
15829
+ threads: external_exports.array(jsonObjectSchema),
15830
+ ownership: external_exports.array(threadOwnershipSchema),
15831
+ /** Known archived IDs, including visible local external records even when their rows are
15832
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15833
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15834
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15835
+ }).strict();
15836
+
15811
15837
  // ../../shared-contracts/dist/voice.js
15812
15838
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15813
15839
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16020,96 +16046,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
16020
16046
  });
16021
16047
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16022
16048
  enabled: false,
16023
- timeoutMinutes: 30
16024
- });
16025
-
16026
- // ../../shared-contracts/dist/harness-plugins.js
16027
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16028
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16029
- var HARNESS_PLUGIN_LIMIT = 128;
16030
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16031
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16032
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16033
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16034
- 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");
16035
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16036
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16037
- var harnessInstallationGuideSchema = external_exports.object({
16038
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16039
- before: localizedTextSchema.optional(),
16040
- after: localizedTextSchema.optional(),
16041
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16042
- }).strict();
16043
- var pluginPresentationShape = {
16044
- id: installedHarnessPluginIdSchema,
16045
- name: external_exports.string().trim().min(1).max(128),
16046
- version: external_exports.string().min(1).max(128),
16047
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16048
- kind: external_exports.literal("usage").optional(),
16049
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16050
- iconStyle: external_exports.object({
16051
- vector: external_exports.object({
16052
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16053
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16054
- paths: external_exports.array(external_exports.object({
16055
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16056
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16057
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16058
- }).strict()).min(1).max(32)
16059
- }).strict().optional(),
16060
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16061
- borderRadius: external_exports.number().min(0).max(50).optional(),
16062
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16063
- }).strict().optional(),
16064
- installation: harnessInstallationGuideSchema.optional(),
16065
- notice: localizedTextSchema.optional(),
16066
- /** The factory accepts a persisted local entrypoint through its construction context. */
16067
- launchCommand: external_exports.literal(true).optional(),
16068
- links: external_exports.object({
16069
- website: documentationUrlSchema.optional(),
16070
- documentation: documentationUrlSchema.optional(),
16071
- installation: documentationUrlSchema.optional()
16072
- }).strict().optional()
16073
- };
16074
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16075
- message: "Plugin surfaces must be unique"
16076
- });
16077
- var harnessPluginManifestSchema = external_exports.object({
16078
- manifestVersion: external_exports.literal(1),
16079
- ...pluginPresentationShape,
16080
- adapterApiVersion: external_exports.number().int().positive(),
16081
- entry: relativeResourceSchema,
16082
- icon: relativeResourceSchema.optional(),
16083
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16084
- surfaces: harnessPluginSurfacesSchema.optional()
16085
- }).strict();
16086
- 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);
16087
- var harnessPluginDescriptorSchema = external_exports.object({
16088
- ...pluginPresentationShape,
16089
- icon: harnessPluginIconSchema.optional()
16090
- }).strict();
16091
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16092
- var harnessPluginListResultSchema = external_exports.object({
16093
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16094
- }).strict();
16095
- var harnessPluginConfigurationSchema = external_exports.object({
16096
- version: external_exports.literal(1),
16097
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16098
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16099
- message: "Enabled plugin IDs must be unique",
16100
- path: ["enabled"]
16049
+ timeoutMinutes: 10
16101
16050
  });
16102
16051
 
16103
16052
  // ../../shared-contracts/dist/harness-preferences.js
16104
16053
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16105
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16054
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16106
16055
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16107
16056
  model: harnessModelRefSchema.optional(),
16108
16057
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16109
16058
  permissionModeId: harnessPermissionModeIdSchema.optional()
16110
16059
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16111
16060
  var newThreadDefaultsSchema = external_exports.strictObject({
16112
- lastHarness: installedHarnessPluginIdSchema.optional(),
16061
+ lastHarness: harnessIdSchema.optional(),
16113
16062
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16114
16063
  });
16115
16064
  var modelId = external_exports.string().min(1).max(1024);
@@ -16130,19 +16079,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16130
16079
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16131
16080
  external_exports.strictObject({
16132
16081
  kind: external_exports.literal("favorite"),
16133
- harnessId: installedHarnessPluginIdSchema,
16082
+ harnessId: harnessIdSchema,
16134
16083
  modelId,
16135
16084
  enabled: external_exports.boolean()
16136
16085
  }),
16137
16086
  external_exports.strictObject({
16138
16087
  kind: external_exports.literal("favorites"),
16139
- harnessId: installedHarnessPluginIdSchema,
16088
+ harnessId: harnessIdSchema,
16140
16089
  modelIds: external_exports.array(modelId).max(2048)
16141
16090
  }),
16142
16091
  external_exports.strictObject({
16143
16092
  kind: external_exports.literal("newThread"),
16144
- lastHarness: installedHarnessPluginIdSchema.optional(),
16145
- harnessId: installedHarnessPluginIdSchema.optional(),
16093
+ lastHarness: harnessIdSchema.optional(),
16094
+ harnessId: harnessIdSchema.optional(),
16146
16095
  configuration: harnessDefaultConfigurationSchema.optional()
16147
16096
  })
16148
16097
  ]);
@@ -16158,12 +16107,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16158
16107
  code: "custom",
16159
16108
  message: "A default Harness or complete configuration is required"
16160
16109
  });
16161
- const harnessId2 = "harnessId" in operation ? operation.harnessId : void 0;
16162
- if (harnessId2 === "codex")
16163
- ctx.addIssue({
16164
- code: "custom",
16165
- message: "Official Codex is not an external Harness"
16166
- });
16167
16110
  }
16168
16111
  });
16169
16112
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16540,6 +16483,76 @@ var harnessAccountListResultSchema = external_exports.object({
16540
16483
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16541
16484
  }).strict();
16542
16485
 
16486
+ // ../../shared-contracts/dist/harness-plugins.js
16487
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16488
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16489
+ var HARNESS_PLUGIN_LIMIT = 128;
16490
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16491
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16492
+ 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");
16493
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16494
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16495
+ var harnessInstallationGuideSchema = external_exports.object({
16496
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16497
+ before: localizedTextSchema.optional(),
16498
+ after: localizedTextSchema.optional(),
16499
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16500
+ }).strict();
16501
+ var pluginPresentationShape = {
16502
+ id: installedHarnessPluginIdSchema,
16503
+ name: external_exports.string().trim().min(1).max(128),
16504
+ version: external_exports.string().min(1).max(128),
16505
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16506
+ kind: external_exports.literal("usage").optional(),
16507
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16508
+ iconStyle: external_exports.object({
16509
+ vector: external_exports.object({
16510
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16511
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16512
+ paths: external_exports.array(external_exports.object({
16513
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16514
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16515
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16516
+ }).strict()).min(1).max(32)
16517
+ }).strict().optional(),
16518
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16519
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16520
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16521
+ }).strict().optional(),
16522
+ installation: harnessInstallationGuideSchema.optional(),
16523
+ notice: localizedTextSchema.optional(),
16524
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16525
+ launchCommand: external_exports.literal(true).optional(),
16526
+ links: external_exports.object({
16527
+ website: documentationUrlSchema.optional(),
16528
+ documentation: documentationUrlSchema.optional(),
16529
+ installation: documentationUrlSchema.optional()
16530
+ }).strict().optional()
16531
+ };
16532
+ var harnessPluginManifestSchema = external_exports.object({
16533
+ manifestVersion: external_exports.literal(1),
16534
+ ...pluginPresentationShape,
16535
+ adapterApiVersion: external_exports.number().int().positive(),
16536
+ entry: relativeResourceSchema,
16537
+ icon: relativeResourceSchema.optional()
16538
+ }).strict();
16539
+ 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);
16540
+ var harnessPluginDescriptorSchema = external_exports.object({
16541
+ ...pluginPresentationShape,
16542
+ icon: harnessPluginIconSchema.optional()
16543
+ }).strict();
16544
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16545
+ var harnessPluginListResultSchema = external_exports.object({
16546
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16547
+ }).strict();
16548
+ var harnessPluginConfigurationSchema = external_exports.object({
16549
+ version: external_exports.literal(1),
16550
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16551
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16552
+ message: "Enabled plugin IDs must be unique",
16553
+ path: ["enabled"]
16554
+ });
16555
+
16543
16556
  // ../../shared-contracts/dist/harness-route.js
16544
16557
  var harnessPluginRouteSchema = external_exports.object({
16545
16558
  harnessId: harnessPluginIdSchema,
@@ -16733,6 +16746,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16733
16746
  }).strict();
16734
16747
  var harnessCommandCatalogSchema = external_exports.object({
16735
16748
  commands: external_exports.array(harnessCommandDescriptorSchema),
16749
+ /** Partial discovery failures; valid commands remain available. */
16750
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16736
16751
  /**
16737
16752
  * `live` when the catalog includes what a native Session reports for its
16738
16753
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16768,7 +16783,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16768
16783
  }).strict();
16769
16784
  var threadCommandExecuteResultSchema = external_exports.object({
16770
16785
  accepted: external_exports.literal(true),
16771
- turnId: hostTurnIdSchema
16786
+ turnId: hostTurnIdSchema.optional()
16772
16787
  }).strict();
16773
16788
 
16774
16789
  // ../../shared-contracts/dist/json-rpc.js