@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
@@ -18673,7 +18673,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
18673
18673
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
18674
18674
  message: "Value must not be empty or whitespace"
18675
18675
  });
18676
- 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();
18676
+ 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();
18677
18677
  var harnessPermissionModeSchema = external_exports.object({
18678
18678
  id: harnessPermissionModeIdSchema,
18679
18679
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -19057,7 +19057,12 @@ var threadInspectionParamsSchema = external_exports.object({
19057
19057
  }).strict();
19058
19058
  var codexThreadInspectionSchema = external_exports.object({
19059
19059
  owner: external_exports.literal("codex"),
19060
- locked: external_exports.literal(true),
19060
+ locked: external_exports.boolean(),
19061
+ effectiveModel: harnessModelRefSchema.optional(),
19062
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
19063
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19064
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
19065
+ history: harnessHistoryCapabilitiesSchema.optional(),
19061
19066
  supportsThreadReferences: external_exports.literal(true).optional()
19062
19067
  }).strict();
19063
19068
  var externalThreadInspectionSchema = external_exports.object({
@@ -19279,7 +19284,8 @@ var clientThreadSnapshotSchema = external_exports.object({
19279
19284
  thread: external_exports.object({
19280
19285
  id: external_exports.string().min(1),
19281
19286
  cwd: external_exports.string(),
19282
- modelProvider: external_exports.literal("codexhost"),
19287
+ /** External rows use codexhost; native Codex rows retain their official provider. */
19288
+ modelProvider: external_exports.string().min(1),
19283
19289
  createdAt: external_exports.number(),
19284
19290
  updatedAt: external_exports.number(),
19285
19291
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -19293,6 +19299,11 @@ var clientThreadSnapshotSchema = external_exports.object({
19293
19299
  nextCursor: external_exports.string().nullable()
19294
19300
  }),
19295
19301
  configuration: external_exports.object({
19302
+ /** Native Codex model names are not external Harness transport refs. */
19303
+ native: external_exports.object({
19304
+ model: external_exports.string().min(1).max(1024).optional(),
19305
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
19306
+ }).optional(),
19296
19307
  effectiveModel: harnessModelRefSchema.optional(),
19297
19308
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19298
19309
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -19319,6 +19330,21 @@ var clientChannelResponseSchema = external_exports.object({
19319
19330
  result: record2
19320
19331
  });
19321
19332
 
19333
+ // ../../shared-contracts/dist/thread-catalog.js
19334
+ var threadCatalogReadParamsSchema = external_exports.object({
19335
+ includeArchived: external_exports.boolean().optional(),
19336
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
19337
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
19338
+ }).strict();
19339
+ var threadCatalogReadResultSchema = external_exports.object({
19340
+ threads: external_exports.array(jsonObjectSchema),
19341
+ ownership: external_exports.array(threadOwnershipSchema),
19342
+ /** Known archived IDs, including visible local external records even when their rows are
19343
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
19344
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
19345
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
19346
+ }).strict();
19347
+
19322
19348
  // ../../shared-contracts/dist/voice.js
19323
19349
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
19324
19350
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -19531,96 +19557,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
19531
19557
  });
19532
19558
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
19533
19559
  enabled: false,
19534
- timeoutMinutes: 30
19535
- });
19536
-
19537
- // ../../shared-contracts/dist/harness-plugins.js
19538
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19539
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
19540
- var HARNESS_PLUGIN_LIMIT = 128;
19541
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
19542
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
19543
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
19544
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
19545
- 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");
19546
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
19547
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
19548
- var harnessInstallationGuideSchema = external_exports.object({
19549
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
19550
- before: localizedTextSchema.optional(),
19551
- after: localizedTextSchema.optional(),
19552
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
19553
- }).strict();
19554
- var pluginPresentationShape = {
19555
- id: installedHarnessPluginIdSchema,
19556
- name: external_exports.string().trim().min(1).max(128),
19557
- version: external_exports.string().min(1).max(128),
19558
- /** Capability-only plugin; omitted for existing session-capable plugins. */
19559
- kind: external_exports.literal("usage").optional(),
19560
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
19561
- iconStyle: external_exports.object({
19562
- vector: external_exports.object({
19563
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
19564
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
19565
- paths: external_exports.array(external_exports.object({
19566
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
19567
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
19568
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
19569
- }).strict()).min(1).max(32)
19570
- }).strict().optional(),
19571
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
19572
- borderRadius: external_exports.number().min(0).max(50).optional(),
19573
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
19574
- }).strict().optional(),
19575
- installation: harnessInstallationGuideSchema.optional(),
19576
- notice: localizedTextSchema.optional(),
19577
- /** The factory accepts a persisted local entrypoint through its construction context. */
19578
- launchCommand: external_exports.literal(true).optional(),
19579
- links: external_exports.object({
19580
- website: documentationUrlSchema.optional(),
19581
- documentation: documentationUrlSchema.optional(),
19582
- installation: documentationUrlSchema.optional()
19583
- }).strict().optional()
19584
- };
19585
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
19586
- message: "Plugin surfaces must be unique"
19587
- });
19588
- var harnessPluginManifestSchema = external_exports.object({
19589
- manifestVersion: external_exports.literal(1),
19590
- ...pluginPresentationShape,
19591
- adapterApiVersion: external_exports.number().int().positive(),
19592
- entry: relativeResourceSchema,
19593
- icon: relativeResourceSchema.optional(),
19594
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
19595
- surfaces: harnessPluginSurfacesSchema.optional()
19596
- }).strict();
19597
- 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);
19598
- var harnessPluginDescriptorSchema = external_exports.object({
19599
- ...pluginPresentationShape,
19600
- icon: harnessPluginIconSchema.optional()
19601
- }).strict();
19602
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
19603
- var harnessPluginListResultSchema = external_exports.object({
19604
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
19605
- }).strict();
19606
- var harnessPluginConfigurationSchema = external_exports.object({
19607
- version: external_exports.literal(1),
19608
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
19609
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
19610
- message: "Enabled plugin IDs must be unique",
19611
- path: ["enabled"]
19560
+ timeoutMinutes: 10
19612
19561
  });
19613
19562
 
19614
19563
  // ../../shared-contracts/dist/harness-preferences.js
19615
19564
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
19616
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
19565
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
19617
19566
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
19618
19567
  model: harnessModelRefSchema.optional(),
19619
19568
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19620
19569
  permissionModeId: harnessPermissionModeIdSchema.optional()
19621
19570
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
19622
19571
  var newThreadDefaultsSchema = external_exports.strictObject({
19623
- lastHarness: installedHarnessPluginIdSchema.optional(),
19572
+ lastHarness: harnessIdSchema.optional(),
19624
19573
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
19625
19574
  });
19626
19575
  var modelId = external_exports.string().min(1).max(1024);
@@ -19641,19 +19590,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
19641
19590
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
19642
19591
  external_exports.strictObject({
19643
19592
  kind: external_exports.literal("favorite"),
19644
- harnessId: installedHarnessPluginIdSchema,
19593
+ harnessId: harnessIdSchema,
19645
19594
  modelId,
19646
19595
  enabled: external_exports.boolean()
19647
19596
  }),
19648
19597
  external_exports.strictObject({
19649
19598
  kind: external_exports.literal("favorites"),
19650
- harnessId: installedHarnessPluginIdSchema,
19599
+ harnessId: harnessIdSchema,
19651
19600
  modelIds: external_exports.array(modelId).max(2048)
19652
19601
  }),
19653
19602
  external_exports.strictObject({
19654
19603
  kind: external_exports.literal("newThread"),
19655
- lastHarness: installedHarnessPluginIdSchema.optional(),
19656
- harnessId: installedHarnessPluginIdSchema.optional(),
19604
+ lastHarness: harnessIdSchema.optional(),
19605
+ harnessId: harnessIdSchema.optional(),
19657
19606
  configuration: harnessDefaultConfigurationSchema.optional()
19658
19607
  })
19659
19608
  ]);
@@ -19669,12 +19618,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
19669
19618
  code: "custom",
19670
19619
  message: "A default Harness or complete configuration is required"
19671
19620
  });
19672
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
19673
- if (harnessId === "codex")
19674
- ctx.addIssue({
19675
- code: "custom",
19676
- message: "Official Codex is not an external Harness"
19677
- });
19678
19621
  }
19679
19622
  });
19680
19623
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -20051,6 +19994,76 @@ var harnessAccountListResultSchema = external_exports.object({
20051
19994
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
20052
19995
  }).strict();
20053
19996
 
19997
+ // ../../shared-contracts/dist/harness-plugins.js
19998
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19999
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
20000
+ var HARNESS_PLUGIN_LIMIT = 128;
20001
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
20002
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
20003
+ 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");
20004
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
20005
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
20006
+ var harnessInstallationGuideSchema = external_exports.object({
20007
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
20008
+ before: localizedTextSchema.optional(),
20009
+ after: localizedTextSchema.optional(),
20010
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
20011
+ }).strict();
20012
+ var pluginPresentationShape = {
20013
+ id: installedHarnessPluginIdSchema,
20014
+ name: external_exports.string().trim().min(1).max(128),
20015
+ version: external_exports.string().min(1).max(128),
20016
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
20017
+ kind: external_exports.literal("usage").optional(),
20018
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
20019
+ iconStyle: external_exports.object({
20020
+ vector: external_exports.object({
20021
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
20022
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
20023
+ paths: external_exports.array(external_exports.object({
20024
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
20025
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
20026
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
20027
+ }).strict()).min(1).max(32)
20028
+ }).strict().optional(),
20029
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
20030
+ borderRadius: external_exports.number().min(0).max(50).optional(),
20031
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
20032
+ }).strict().optional(),
20033
+ installation: harnessInstallationGuideSchema.optional(),
20034
+ notice: localizedTextSchema.optional(),
20035
+ /** The factory accepts a persisted local entrypoint through its construction context. */
20036
+ launchCommand: external_exports.literal(true).optional(),
20037
+ links: external_exports.object({
20038
+ website: documentationUrlSchema.optional(),
20039
+ documentation: documentationUrlSchema.optional(),
20040
+ installation: documentationUrlSchema.optional()
20041
+ }).strict().optional()
20042
+ };
20043
+ var harnessPluginManifestSchema = external_exports.object({
20044
+ manifestVersion: external_exports.literal(1),
20045
+ ...pluginPresentationShape,
20046
+ adapterApiVersion: external_exports.number().int().positive(),
20047
+ entry: relativeResourceSchema,
20048
+ icon: relativeResourceSchema.optional()
20049
+ }).strict();
20050
+ 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);
20051
+ var harnessPluginDescriptorSchema = external_exports.object({
20052
+ ...pluginPresentationShape,
20053
+ icon: harnessPluginIconSchema.optional()
20054
+ }).strict();
20055
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
20056
+ var harnessPluginListResultSchema = external_exports.object({
20057
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
20058
+ }).strict();
20059
+ var harnessPluginConfigurationSchema = external_exports.object({
20060
+ version: external_exports.literal(1),
20061
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
20062
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
20063
+ message: "Enabled plugin IDs must be unique",
20064
+ path: ["enabled"]
20065
+ });
20066
+
20054
20067
  // ../../shared-contracts/dist/harness-route.js
20055
20068
  var harnessPluginRouteSchema = external_exports.object({
20056
20069
  harnessId: harnessPluginIdSchema,
@@ -20244,6 +20257,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
20244
20257
  }).strict();
20245
20258
  var harnessCommandCatalogSchema = external_exports.object({
20246
20259
  commands: external_exports.array(harnessCommandDescriptorSchema),
20260
+ /** Partial discovery failures; valid commands remain available. */
20261
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
20247
20262
  /**
20248
20263
  * `live` when the catalog includes what a native Session reports for its
20249
20264
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -20279,7 +20294,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
20279
20294
  }).strict();
20280
20295
  var threadCommandExecuteResultSchema = external_exports.object({
20281
20296
  accepted: external_exports.literal(true),
20282
- turnId: hostTurnIdSchema
20297
+ turnId: hostTurnIdSchema.optional()
20283
20298
  }).strict();
20284
20299
 
20285
20300
  // ../../shared-contracts/dist/json-rpc.js
@@ -14983,7 +14983,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14983
14983
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14984
14984
  message: "Value must not be empty or whitespace"
14985
14985
  });
14986
- var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14986
+ var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14987
14987
  var harnessPermissionModeSchema = external_exports.object({
14988
14988
  id: harnessPermissionModeIdSchema,
14989
14989
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15367,7 +15367,12 @@ var threadInspectionParamsSchema = external_exports.object({
15367
15367
  }).strict();
15368
15368
  var codexThreadInspectionSchema = external_exports.object({
15369
15369
  owner: external_exports.literal("codex"),
15370
- locked: external_exports.literal(true),
15370
+ locked: external_exports.boolean(),
15371
+ effectiveModel: harnessModelRefSchema.optional(),
15372
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15373
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15374
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15375
+ history: harnessHistoryCapabilitiesSchema.optional(),
15371
15376
  supportsThreadReferences: external_exports.literal(true).optional()
15372
15377
  }).strict();
15373
15378
  var externalThreadInspectionSchema = external_exports.object({
@@ -15589,7 +15594,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15589
15594
  thread: external_exports.object({
15590
15595
  id: external_exports.string().min(1),
15591
15596
  cwd: external_exports.string(),
15592
- modelProvider: external_exports.literal("codexhost"),
15597
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15598
+ modelProvider: external_exports.string().min(1),
15593
15599
  createdAt: external_exports.number(),
15594
15600
  updatedAt: external_exports.number(),
15595
15601
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15603,6 +15609,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15603
15609
  nextCursor: external_exports.string().nullable()
15604
15610
  }),
15605
15611
  configuration: external_exports.object({
15612
+ /** Native Codex model names are not external Harness transport refs. */
15613
+ native: external_exports.object({
15614
+ model: external_exports.string().min(1).max(1024).optional(),
15615
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15616
+ }).optional(),
15606
15617
  effectiveModel: harnessModelRefSchema.optional(),
15607
15618
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15608
15619
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15629,6 +15640,21 @@ var clientChannelResponseSchema = external_exports.object({
15629
15640
  result: record2
15630
15641
  });
15631
15642
 
15643
+ // ../../shared-contracts/dist/thread-catalog.js
15644
+ var threadCatalogReadParamsSchema = external_exports.object({
15645
+ includeArchived: external_exports.boolean().optional(),
15646
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15647
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15648
+ }).strict();
15649
+ var threadCatalogReadResultSchema = external_exports.object({
15650
+ threads: external_exports.array(jsonObjectSchema),
15651
+ ownership: external_exports.array(threadOwnershipSchema),
15652
+ /** Known archived IDs, including visible local external records even when their rows are
15653
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15654
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15655
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15656
+ }).strict();
15657
+
15632
15658
  // ../../shared-contracts/dist/voice.js
15633
15659
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15634
15660
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15841,96 +15867,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15841
15867
  });
15842
15868
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15843
15869
  enabled: false,
15844
- timeoutMinutes: 30
15845
- });
15846
-
15847
- // ../../shared-contracts/dist/harness-plugins.js
15848
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15849
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15850
- var HARNESS_PLUGIN_LIMIT = 128;
15851
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15852
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15853
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15854
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15855
- var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
15856
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15857
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15858
- var harnessInstallationGuideSchema = external_exports.object({
15859
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15860
- before: localizedTextSchema.optional(),
15861
- after: localizedTextSchema.optional(),
15862
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15863
- }).strict();
15864
- var pluginPresentationShape = {
15865
- id: installedHarnessPluginIdSchema,
15866
- name: external_exports.string().trim().min(1).max(128),
15867
- version: external_exports.string().min(1).max(128),
15868
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15869
- kind: external_exports.literal("usage").optional(),
15870
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15871
- iconStyle: external_exports.object({
15872
- vector: external_exports.object({
15873
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15874
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15875
- paths: external_exports.array(external_exports.object({
15876
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15877
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15878
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15879
- }).strict()).min(1).max(32)
15880
- }).strict().optional(),
15881
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15882
- borderRadius: external_exports.number().min(0).max(50).optional(),
15883
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15884
- }).strict().optional(),
15885
- installation: harnessInstallationGuideSchema.optional(),
15886
- notice: localizedTextSchema.optional(),
15887
- /** The factory accepts a persisted local entrypoint through its construction context. */
15888
- launchCommand: external_exports.literal(true).optional(),
15889
- links: external_exports.object({
15890
- website: documentationUrlSchema.optional(),
15891
- documentation: documentationUrlSchema.optional(),
15892
- installation: documentationUrlSchema.optional()
15893
- }).strict().optional()
15894
- };
15895
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15896
- message: "Plugin surfaces must be unique"
15897
- });
15898
- var harnessPluginManifestSchema = external_exports.object({
15899
- manifestVersion: external_exports.literal(1),
15900
- ...pluginPresentationShape,
15901
- adapterApiVersion: external_exports.number().int().positive(),
15902
- entry: relativeResourceSchema,
15903
- icon: relativeResourceSchema.optional(),
15904
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15905
- surfaces: harnessPluginSurfacesSchema.optional()
15906
- }).strict();
15907
- var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
15908
- var harnessPluginDescriptorSchema = external_exports.object({
15909
- ...pluginPresentationShape,
15910
- icon: harnessPluginIconSchema.optional()
15911
- }).strict();
15912
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15913
- var harnessPluginListResultSchema = external_exports.object({
15914
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15915
- }).strict();
15916
- var harnessPluginConfigurationSchema = external_exports.object({
15917
- version: external_exports.literal(1),
15918
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15919
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15920
- message: "Enabled plugin IDs must be unique",
15921
- path: ["enabled"]
15870
+ timeoutMinutes: 10
15922
15871
  });
15923
15872
 
15924
15873
  // ../../shared-contracts/dist/harness-preferences.js
15925
15874
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15926
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15875
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15927
15876
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15928
15877
  model: harnessModelRefSchema.optional(),
15929
15878
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15930
15879
  permissionModeId: harnessPermissionModeIdSchema.optional()
15931
15880
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15932
15881
  var newThreadDefaultsSchema = external_exports.strictObject({
15933
- lastHarness: installedHarnessPluginIdSchema.optional(),
15882
+ lastHarness: harnessIdSchema.optional(),
15934
15883
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15935
15884
  });
15936
15885
  var modelId = external_exports.string().min(1).max(1024);
@@ -15951,19 +15900,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15951
15900
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15952
15901
  external_exports.strictObject({
15953
15902
  kind: external_exports.literal("favorite"),
15954
- harnessId: installedHarnessPluginIdSchema,
15903
+ harnessId: harnessIdSchema,
15955
15904
  modelId,
15956
15905
  enabled: external_exports.boolean()
15957
15906
  }),
15958
15907
  external_exports.strictObject({
15959
15908
  kind: external_exports.literal("favorites"),
15960
- harnessId: installedHarnessPluginIdSchema,
15909
+ harnessId: harnessIdSchema,
15961
15910
  modelIds: external_exports.array(modelId).max(2048)
15962
15911
  }),
15963
15912
  external_exports.strictObject({
15964
15913
  kind: external_exports.literal("newThread"),
15965
- lastHarness: installedHarnessPluginIdSchema.optional(),
15966
- harnessId: installedHarnessPluginIdSchema.optional(),
15914
+ lastHarness: harnessIdSchema.optional(),
15915
+ harnessId: harnessIdSchema.optional(),
15967
15916
  configuration: harnessDefaultConfigurationSchema.optional()
15968
15917
  })
15969
15918
  ]);
@@ -15979,12 +15928,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15979
15928
  code: "custom",
15980
15929
  message: "A default Harness or complete configuration is required"
15981
15930
  });
15982
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15983
- if (harnessId === "codex")
15984
- ctx.addIssue({
15985
- code: "custom",
15986
- message: "Official Codex is not an external Harness"
15987
- });
15988
15931
  }
15989
15932
  });
15990
15933
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16361,6 +16304,76 @@ var harnessAccountListResultSchema = external_exports.object({
16361
16304
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16362
16305
  }).strict();
16363
16306
 
16307
+ // ../../shared-contracts/dist/harness-plugins.js
16308
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16309
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16310
+ var HARNESS_PLUGIN_LIMIT = 128;
16311
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16312
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16313
+ var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
16314
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16315
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16316
+ var harnessInstallationGuideSchema = external_exports.object({
16317
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16318
+ before: localizedTextSchema.optional(),
16319
+ after: localizedTextSchema.optional(),
16320
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16321
+ }).strict();
16322
+ var pluginPresentationShape = {
16323
+ id: installedHarnessPluginIdSchema,
16324
+ name: external_exports.string().trim().min(1).max(128),
16325
+ version: external_exports.string().min(1).max(128),
16326
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16327
+ kind: external_exports.literal("usage").optional(),
16328
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16329
+ iconStyle: external_exports.object({
16330
+ vector: external_exports.object({
16331
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16332
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16333
+ paths: external_exports.array(external_exports.object({
16334
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16335
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16336
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16337
+ }).strict()).min(1).max(32)
16338
+ }).strict().optional(),
16339
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16340
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16341
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16342
+ }).strict().optional(),
16343
+ installation: harnessInstallationGuideSchema.optional(),
16344
+ notice: localizedTextSchema.optional(),
16345
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16346
+ launchCommand: external_exports.literal(true).optional(),
16347
+ links: external_exports.object({
16348
+ website: documentationUrlSchema.optional(),
16349
+ documentation: documentationUrlSchema.optional(),
16350
+ installation: documentationUrlSchema.optional()
16351
+ }).strict().optional()
16352
+ };
16353
+ var harnessPluginManifestSchema = external_exports.object({
16354
+ manifestVersion: external_exports.literal(1),
16355
+ ...pluginPresentationShape,
16356
+ adapterApiVersion: external_exports.number().int().positive(),
16357
+ entry: relativeResourceSchema,
16358
+ icon: relativeResourceSchema.optional()
16359
+ }).strict();
16360
+ var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
16361
+ var harnessPluginDescriptorSchema = external_exports.object({
16362
+ ...pluginPresentationShape,
16363
+ icon: harnessPluginIconSchema.optional()
16364
+ }).strict();
16365
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16366
+ var harnessPluginListResultSchema = external_exports.object({
16367
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16368
+ }).strict();
16369
+ var harnessPluginConfigurationSchema = external_exports.object({
16370
+ version: external_exports.literal(1),
16371
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16372
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16373
+ message: "Enabled plugin IDs must be unique",
16374
+ path: ["enabled"]
16375
+ });
16376
+
16364
16377
  // ../../shared-contracts/dist/harness-route.js
16365
16378
  var harnessPluginRouteSchema = external_exports.object({
16366
16379
  harnessId: harnessPluginIdSchema,
@@ -16554,6 +16567,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16554
16567
  }).strict();
16555
16568
  var harnessCommandCatalogSchema = external_exports.object({
16556
16569
  commands: external_exports.array(harnessCommandDescriptorSchema),
16570
+ /** Partial discovery failures; valid commands remain available. */
16571
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16557
16572
  /**
16558
16573
  * `live` when the catalog includes what a native Session reports for its
16559
16574
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16589,7 +16604,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16589
16604
  }).strict();
16590
16605
  var threadCommandExecuteResultSchema = external_exports.object({
16591
16606
  accepted: external_exports.literal(true),
16592
- turnId: hostTurnIdSchema
16607
+ turnId: hostTurnIdSchema.optional()
16593
16608
  }).strict();
16594
16609
 
16595
16610
  // ../../shared-contracts/dist/json-rpc.js