@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
@@ -14622,7 +14622,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14622
14622
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14623
14623
  message: "Value must not be empty or whitespace"
14624
14624
  });
14625
- 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();
14625
+ 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();
14626
14626
  var harnessPermissionModeSchema = external_exports.object({
14627
14627
  id: harnessPermissionModeIdSchema,
14628
14628
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15006,7 +15006,12 @@ var threadInspectionParamsSchema = external_exports.object({
15006
15006
  }).strict();
15007
15007
  var codexThreadInspectionSchema = external_exports.object({
15008
15008
  owner: external_exports.literal("codex"),
15009
- locked: external_exports.literal(true),
15009
+ locked: external_exports.boolean(),
15010
+ effectiveModel: harnessModelRefSchema.optional(),
15011
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15012
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15013
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15014
+ history: harnessHistoryCapabilitiesSchema.optional(),
15010
15015
  supportsThreadReferences: external_exports.literal(true).optional()
15011
15016
  }).strict();
15012
15017
  var externalThreadInspectionSchema = external_exports.object({
@@ -15228,7 +15233,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15228
15233
  thread: external_exports.object({
15229
15234
  id: external_exports.string().min(1),
15230
15235
  cwd: external_exports.string(),
15231
- modelProvider: external_exports.literal("codexhost"),
15236
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15237
+ modelProvider: external_exports.string().min(1),
15232
15238
  createdAt: external_exports.number(),
15233
15239
  updatedAt: external_exports.number(),
15234
15240
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15242,6 +15248,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15242
15248
  nextCursor: external_exports.string().nullable()
15243
15249
  }),
15244
15250
  configuration: external_exports.object({
15251
+ /** Native Codex model names are not external Harness transport refs. */
15252
+ native: external_exports.object({
15253
+ model: external_exports.string().min(1).max(1024).optional(),
15254
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15255
+ }).optional(),
15245
15256
  effectiveModel: harnessModelRefSchema.optional(),
15246
15257
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15247
15258
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15268,6 +15279,21 @@ var clientChannelResponseSchema = external_exports.object({
15268
15279
  result: record2
15269
15280
  });
15270
15281
 
15282
+ // ../../shared-contracts/dist/thread-catalog.js
15283
+ var threadCatalogReadParamsSchema = external_exports.object({
15284
+ includeArchived: external_exports.boolean().optional(),
15285
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15286
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15287
+ }).strict();
15288
+ var threadCatalogReadResultSchema = external_exports.object({
15289
+ threads: external_exports.array(jsonObjectSchema),
15290
+ ownership: external_exports.array(threadOwnershipSchema),
15291
+ /** Known archived IDs, including visible local external records even when their rows are
15292
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15293
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15294
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15295
+ }).strict();
15296
+
15271
15297
  // ../../shared-contracts/dist/voice.js
15272
15298
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15273
15299
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15480,96 +15506,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15480
15506
  });
15481
15507
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15482
15508
  enabled: false,
15483
- timeoutMinutes: 30
15484
- });
15485
-
15486
- // ../../shared-contracts/dist/harness-plugins.js
15487
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15488
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15489
- var HARNESS_PLUGIN_LIMIT = 128;
15490
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15491
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15492
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15493
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15494
- 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");
15495
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15496
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15497
- var harnessInstallationGuideSchema = external_exports.object({
15498
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15499
- before: localizedTextSchema.optional(),
15500
- after: localizedTextSchema.optional(),
15501
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15502
- }).strict();
15503
- var pluginPresentationShape = {
15504
- id: installedHarnessPluginIdSchema,
15505
- name: external_exports.string().trim().min(1).max(128),
15506
- version: external_exports.string().min(1).max(128),
15507
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15508
- kind: external_exports.literal("usage").optional(),
15509
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15510
- iconStyle: external_exports.object({
15511
- vector: external_exports.object({
15512
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15513
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15514
- paths: external_exports.array(external_exports.object({
15515
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15516
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15517
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15518
- }).strict()).min(1).max(32)
15519
- }).strict().optional(),
15520
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15521
- borderRadius: external_exports.number().min(0).max(50).optional(),
15522
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15523
- }).strict().optional(),
15524
- installation: harnessInstallationGuideSchema.optional(),
15525
- notice: localizedTextSchema.optional(),
15526
- /** The factory accepts a persisted local entrypoint through its construction context. */
15527
- launchCommand: external_exports.literal(true).optional(),
15528
- links: external_exports.object({
15529
- website: documentationUrlSchema.optional(),
15530
- documentation: documentationUrlSchema.optional(),
15531
- installation: documentationUrlSchema.optional()
15532
- }).strict().optional()
15533
- };
15534
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15535
- message: "Plugin surfaces must be unique"
15536
- });
15537
- var harnessPluginManifestSchema = external_exports.object({
15538
- manifestVersion: external_exports.literal(1),
15539
- ...pluginPresentationShape,
15540
- adapterApiVersion: external_exports.number().int().positive(),
15541
- entry: relativeResourceSchema,
15542
- icon: relativeResourceSchema.optional(),
15543
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15544
- surfaces: harnessPluginSurfacesSchema.optional()
15545
- }).strict();
15546
- 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);
15547
- var harnessPluginDescriptorSchema = external_exports.object({
15548
- ...pluginPresentationShape,
15549
- icon: harnessPluginIconSchema.optional()
15550
- }).strict();
15551
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15552
- var harnessPluginListResultSchema = external_exports.object({
15553
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15554
- }).strict();
15555
- var harnessPluginConfigurationSchema = external_exports.object({
15556
- version: external_exports.literal(1),
15557
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15558
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15559
- message: "Enabled plugin IDs must be unique",
15560
- path: ["enabled"]
15509
+ timeoutMinutes: 10
15561
15510
  });
15562
15511
 
15563
15512
  // ../../shared-contracts/dist/harness-preferences.js
15564
15513
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15565
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15514
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15566
15515
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15567
15516
  model: harnessModelRefSchema.optional(),
15568
15517
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15569
15518
  permissionModeId: harnessPermissionModeIdSchema.optional()
15570
15519
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15571
15520
  var newThreadDefaultsSchema = external_exports.strictObject({
15572
- lastHarness: installedHarnessPluginIdSchema.optional(),
15521
+ lastHarness: harnessIdSchema.optional(),
15573
15522
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15574
15523
  });
15575
15524
  var modelId = external_exports.string().min(1).max(1024);
@@ -15590,19 +15539,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15590
15539
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15591
15540
  external_exports.strictObject({
15592
15541
  kind: external_exports.literal("favorite"),
15593
- harnessId: installedHarnessPluginIdSchema,
15542
+ harnessId: harnessIdSchema,
15594
15543
  modelId,
15595
15544
  enabled: external_exports.boolean()
15596
15545
  }),
15597
15546
  external_exports.strictObject({
15598
15547
  kind: external_exports.literal("favorites"),
15599
- harnessId: installedHarnessPluginIdSchema,
15548
+ harnessId: harnessIdSchema,
15600
15549
  modelIds: external_exports.array(modelId).max(2048)
15601
15550
  }),
15602
15551
  external_exports.strictObject({
15603
15552
  kind: external_exports.literal("newThread"),
15604
- lastHarness: installedHarnessPluginIdSchema.optional(),
15605
- harnessId: installedHarnessPluginIdSchema.optional(),
15553
+ lastHarness: harnessIdSchema.optional(),
15554
+ harnessId: harnessIdSchema.optional(),
15606
15555
  configuration: harnessDefaultConfigurationSchema.optional()
15607
15556
  })
15608
15557
  ]);
@@ -15618,12 +15567,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15618
15567
  code: "custom",
15619
15568
  message: "A default Harness or complete configuration is required"
15620
15569
  });
15621
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15622
- if (harnessId === "codex")
15623
- ctx.addIssue({
15624
- code: "custom",
15625
- message: "Official Codex is not an external Harness"
15626
- });
15627
15570
  }
15628
15571
  });
15629
15572
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16000,6 +15943,76 @@ var harnessAccountListResultSchema = external_exports.object({
16000
15943
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16001
15944
  }).strict();
16002
15945
 
15946
+ // ../../shared-contracts/dist/harness-plugins.js
15947
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15948
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15949
+ var HARNESS_PLUGIN_LIMIT = 128;
15950
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15951
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15952
+ 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");
15953
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15954
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15955
+ var harnessInstallationGuideSchema = external_exports.object({
15956
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15957
+ before: localizedTextSchema.optional(),
15958
+ after: localizedTextSchema.optional(),
15959
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15960
+ }).strict();
15961
+ var pluginPresentationShape = {
15962
+ id: installedHarnessPluginIdSchema,
15963
+ name: external_exports.string().trim().min(1).max(128),
15964
+ version: external_exports.string().min(1).max(128),
15965
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15966
+ kind: external_exports.literal("usage").optional(),
15967
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15968
+ iconStyle: external_exports.object({
15969
+ vector: external_exports.object({
15970
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15971
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15972
+ paths: external_exports.array(external_exports.object({
15973
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15974
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15975
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15976
+ }).strict()).min(1).max(32)
15977
+ }).strict().optional(),
15978
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15979
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15980
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15981
+ }).strict().optional(),
15982
+ installation: harnessInstallationGuideSchema.optional(),
15983
+ notice: localizedTextSchema.optional(),
15984
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15985
+ launchCommand: external_exports.literal(true).optional(),
15986
+ links: external_exports.object({
15987
+ website: documentationUrlSchema.optional(),
15988
+ documentation: documentationUrlSchema.optional(),
15989
+ installation: documentationUrlSchema.optional()
15990
+ }).strict().optional()
15991
+ };
15992
+ var harnessPluginManifestSchema = external_exports.object({
15993
+ manifestVersion: external_exports.literal(1),
15994
+ ...pluginPresentationShape,
15995
+ adapterApiVersion: external_exports.number().int().positive(),
15996
+ entry: relativeResourceSchema,
15997
+ icon: relativeResourceSchema.optional()
15998
+ }).strict();
15999
+ 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);
16000
+ var harnessPluginDescriptorSchema = external_exports.object({
16001
+ ...pluginPresentationShape,
16002
+ icon: harnessPluginIconSchema.optional()
16003
+ }).strict();
16004
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16005
+ var harnessPluginListResultSchema = external_exports.object({
16006
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16007
+ }).strict();
16008
+ var harnessPluginConfigurationSchema = external_exports.object({
16009
+ version: external_exports.literal(1),
16010
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16011
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16012
+ message: "Enabled plugin IDs must be unique",
16013
+ path: ["enabled"]
16014
+ });
16015
+
16003
16016
  // ../../shared-contracts/dist/harness-route.js
16004
16017
  var harnessPluginRouteSchema = external_exports.object({
16005
16018
  harnessId: harnessPluginIdSchema,
@@ -16193,6 +16206,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16193
16206
  }).strict();
16194
16207
  var harnessCommandCatalogSchema = external_exports.object({
16195
16208
  commands: external_exports.array(harnessCommandDescriptorSchema),
16209
+ /** Partial discovery failures; valid commands remain available. */
16210
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16196
16211
  /**
16197
16212
  * `live` when the catalog includes what a native Session reports for its
16198
16213
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16228,7 +16243,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16228
16243
  }).strict();
16229
16244
  var threadCommandExecuteResultSchema = external_exports.object({
16230
16245
  accepted: external_exports.literal(true),
16231
- turnId: hostTurnIdSchema
16246
+ turnId: hostTurnIdSchema.optional()
16232
16247
  }).strict();
16233
16248
 
16234
16249
  // ../../shared-contracts/dist/json-rpc.js
@@ -14808,7 +14808,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14808
14808
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14809
14809
  message: "Value must not be empty or whitespace"
14810
14810
  });
14811
- 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();
14811
+ 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();
14812
14812
  var harnessPermissionModeSchema = external_exports.object({
14813
14813
  id: harnessPermissionModeIdSchema,
14814
14814
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15192,7 +15192,12 @@ var threadInspectionParamsSchema = external_exports.object({
15192
15192
  }).strict();
15193
15193
  var codexThreadInspectionSchema = external_exports.object({
15194
15194
  owner: external_exports.literal("codex"),
15195
- locked: external_exports.literal(true),
15195
+ locked: external_exports.boolean(),
15196
+ effectiveModel: harnessModelRefSchema.optional(),
15197
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15198
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15199
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15200
+ history: harnessHistoryCapabilitiesSchema.optional(),
15196
15201
  supportsThreadReferences: external_exports.literal(true).optional()
15197
15202
  }).strict();
15198
15203
  var externalThreadInspectionSchema = external_exports.object({
@@ -15414,7 +15419,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15414
15419
  thread: external_exports.object({
15415
15420
  id: external_exports.string().min(1),
15416
15421
  cwd: external_exports.string(),
15417
- modelProvider: external_exports.literal("codexhost"),
15422
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15423
+ modelProvider: external_exports.string().min(1),
15418
15424
  createdAt: external_exports.number(),
15419
15425
  updatedAt: external_exports.number(),
15420
15426
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15428,6 +15434,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15428
15434
  nextCursor: external_exports.string().nullable()
15429
15435
  }),
15430
15436
  configuration: external_exports.object({
15437
+ /** Native Codex model names are not external Harness transport refs. */
15438
+ native: external_exports.object({
15439
+ model: external_exports.string().min(1).max(1024).optional(),
15440
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15441
+ }).optional(),
15431
15442
  effectiveModel: harnessModelRefSchema.optional(),
15432
15443
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15433
15444
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15454,6 +15465,21 @@ var clientChannelResponseSchema = external_exports.object({
15454
15465
  result: record3
15455
15466
  });
15456
15467
 
15468
+ // ../../shared-contracts/dist/thread-catalog.js
15469
+ var threadCatalogReadParamsSchema = external_exports.object({
15470
+ includeArchived: external_exports.boolean().optional(),
15471
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
15472
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15473
+ }).strict();
15474
+ var threadCatalogReadResultSchema = external_exports.object({
15475
+ threads: external_exports.array(jsonObjectSchema),
15476
+ ownership: external_exports.array(threadOwnershipSchema),
15477
+ /** Known archived IDs, including visible local external records even when their rows are
15478
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
15479
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
15480
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
15481
+ }).strict();
15482
+
15457
15483
  // ../../shared-contracts/dist/voice.js
15458
15484
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15459
15485
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15666,96 +15692,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
15666
15692
  });
15667
15693
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15668
15694
  enabled: false,
15669
- timeoutMinutes: 30
15670
- });
15671
-
15672
- // ../../shared-contracts/dist/harness-plugins.js
15673
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15674
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15675
- var HARNESS_PLUGIN_LIMIT = 128;
15676
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15677
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15678
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15679
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15680
- 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");
15681
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15682
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15683
- var harnessInstallationGuideSchema = external_exports.object({
15684
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15685
- before: localizedTextSchema.optional(),
15686
- after: localizedTextSchema.optional(),
15687
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15688
- }).strict();
15689
- var pluginPresentationShape = {
15690
- id: installedHarnessPluginIdSchema,
15691
- name: external_exports.string().trim().min(1).max(128),
15692
- version: external_exports.string().min(1).max(128),
15693
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15694
- kind: external_exports.literal("usage").optional(),
15695
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15696
- iconStyle: external_exports.object({
15697
- vector: external_exports.object({
15698
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15699
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15700
- paths: external_exports.array(external_exports.object({
15701
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15702
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15703
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15704
- }).strict()).min(1).max(32)
15705
- }).strict().optional(),
15706
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15707
- borderRadius: external_exports.number().min(0).max(50).optional(),
15708
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15709
- }).strict().optional(),
15710
- installation: harnessInstallationGuideSchema.optional(),
15711
- notice: localizedTextSchema.optional(),
15712
- /** The factory accepts a persisted local entrypoint through its construction context. */
15713
- launchCommand: external_exports.literal(true).optional(),
15714
- links: external_exports.object({
15715
- website: documentationUrlSchema.optional(),
15716
- documentation: documentationUrlSchema.optional(),
15717
- installation: documentationUrlSchema.optional()
15718
- }).strict().optional()
15719
- };
15720
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15721
- message: "Plugin surfaces must be unique"
15722
- });
15723
- var harnessPluginManifestSchema = external_exports.object({
15724
- manifestVersion: external_exports.literal(1),
15725
- ...pluginPresentationShape,
15726
- adapterApiVersion: external_exports.number().int().positive(),
15727
- entry: relativeResourceSchema,
15728
- icon: relativeResourceSchema.optional(),
15729
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15730
- surfaces: harnessPluginSurfacesSchema.optional()
15731
- }).strict();
15732
- 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);
15733
- var harnessPluginDescriptorSchema = external_exports.object({
15734
- ...pluginPresentationShape,
15735
- icon: harnessPluginIconSchema.optional()
15736
- }).strict();
15737
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15738
- var harnessPluginListResultSchema = external_exports.object({
15739
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15740
- }).strict();
15741
- var harnessPluginConfigurationSchema = external_exports.object({
15742
- version: external_exports.literal(1),
15743
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15744
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15745
- message: "Enabled plugin IDs must be unique",
15746
- path: ["enabled"]
15695
+ timeoutMinutes: 10
15747
15696
  });
15748
15697
 
15749
15698
  // ../../shared-contracts/dist/harness-preferences.js
15750
15699
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15751
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15700
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15752
15701
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15753
15702
  model: harnessModelRefSchema.optional(),
15754
15703
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15755
15704
  permissionModeId: harnessPermissionModeIdSchema.optional()
15756
15705
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15757
15706
  var newThreadDefaultsSchema = external_exports.strictObject({
15758
- lastHarness: installedHarnessPluginIdSchema.optional(),
15707
+ lastHarness: harnessIdSchema.optional(),
15759
15708
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15760
15709
  });
15761
15710
  var modelId = external_exports.string().min(1).max(1024);
@@ -15776,19 +15725,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15776
15725
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15777
15726
  external_exports.strictObject({
15778
15727
  kind: external_exports.literal("favorite"),
15779
- harnessId: installedHarnessPluginIdSchema,
15728
+ harnessId: harnessIdSchema,
15780
15729
  modelId,
15781
15730
  enabled: external_exports.boolean()
15782
15731
  }),
15783
15732
  external_exports.strictObject({
15784
15733
  kind: external_exports.literal("favorites"),
15785
- harnessId: installedHarnessPluginIdSchema,
15734
+ harnessId: harnessIdSchema,
15786
15735
  modelIds: external_exports.array(modelId).max(2048)
15787
15736
  }),
15788
15737
  external_exports.strictObject({
15789
15738
  kind: external_exports.literal("newThread"),
15790
- lastHarness: installedHarnessPluginIdSchema.optional(),
15791
- harnessId: installedHarnessPluginIdSchema.optional(),
15739
+ lastHarness: harnessIdSchema.optional(),
15740
+ harnessId: harnessIdSchema.optional(),
15792
15741
  configuration: harnessDefaultConfigurationSchema.optional()
15793
15742
  })
15794
15743
  ]);
@@ -15804,12 +15753,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15804
15753
  code: "custom",
15805
15754
  message: "A default Harness or complete configuration is required"
15806
15755
  });
15807
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15808
- if (harnessId === "codex")
15809
- ctx.addIssue({
15810
- code: "custom",
15811
- message: "Official Codex is not an external Harness"
15812
- });
15813
15756
  }
15814
15757
  });
15815
15758
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16186,6 +16129,76 @@ var harnessAccountListResultSchema = external_exports.object({
16186
16129
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16187
16130
  }).strict();
16188
16131
 
16132
+ // ../../shared-contracts/dist/harness-plugins.js
16133
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16134
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16135
+ var HARNESS_PLUGIN_LIMIT = 128;
16136
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16137
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16138
+ 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");
16139
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16140
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16141
+ var harnessInstallationGuideSchema = external_exports.object({
16142
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16143
+ before: localizedTextSchema.optional(),
16144
+ after: localizedTextSchema.optional(),
16145
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16146
+ }).strict();
16147
+ var pluginPresentationShape = {
16148
+ id: installedHarnessPluginIdSchema,
16149
+ name: external_exports.string().trim().min(1).max(128),
16150
+ version: external_exports.string().min(1).max(128),
16151
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16152
+ kind: external_exports.literal("usage").optional(),
16153
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16154
+ iconStyle: external_exports.object({
16155
+ vector: external_exports.object({
16156
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16157
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16158
+ paths: external_exports.array(external_exports.object({
16159
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16160
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16161
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16162
+ }).strict()).min(1).max(32)
16163
+ }).strict().optional(),
16164
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16165
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16166
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16167
+ }).strict().optional(),
16168
+ installation: harnessInstallationGuideSchema.optional(),
16169
+ notice: localizedTextSchema.optional(),
16170
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16171
+ launchCommand: external_exports.literal(true).optional(),
16172
+ links: external_exports.object({
16173
+ website: documentationUrlSchema.optional(),
16174
+ documentation: documentationUrlSchema.optional(),
16175
+ installation: documentationUrlSchema.optional()
16176
+ }).strict().optional()
16177
+ };
16178
+ var harnessPluginManifestSchema = external_exports.object({
16179
+ manifestVersion: external_exports.literal(1),
16180
+ ...pluginPresentationShape,
16181
+ adapterApiVersion: external_exports.number().int().positive(),
16182
+ entry: relativeResourceSchema,
16183
+ icon: relativeResourceSchema.optional()
16184
+ }).strict();
16185
+ 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);
16186
+ var harnessPluginDescriptorSchema = external_exports.object({
16187
+ ...pluginPresentationShape,
16188
+ icon: harnessPluginIconSchema.optional()
16189
+ }).strict();
16190
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16191
+ var harnessPluginListResultSchema = external_exports.object({
16192
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16193
+ }).strict();
16194
+ var harnessPluginConfigurationSchema = external_exports.object({
16195
+ version: external_exports.literal(1),
16196
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16197
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16198
+ message: "Enabled plugin IDs must be unique",
16199
+ path: ["enabled"]
16200
+ });
16201
+
16189
16202
  // ../../shared-contracts/dist/harness-route.js
16190
16203
  var harnessPluginRouteSchema = external_exports.object({
16191
16204
  harnessId: harnessPluginIdSchema,
@@ -16379,6 +16392,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16379
16392
  }).strict();
16380
16393
  var harnessCommandCatalogSchema = external_exports.object({
16381
16394
  commands: external_exports.array(harnessCommandDescriptorSchema),
16395
+ /** Partial discovery failures; valid commands remain available. */
16396
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16382
16397
  /**
16383
16398
  * `live` when the catalog includes what a native Session reports for its
16384
16399
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16414,7 +16429,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16414
16429
  }).strict();
16415
16430
  var threadCommandExecuteResultSchema = external_exports.object({
16416
16431
  accepted: external_exports.literal(true),
16417
- turnId: hostTurnIdSchema
16432
+ turnId: hostTurnIdSchema.optional()
16418
16433
  }).strict();
16419
16434
 
16420
16435
  // ../../shared-contracts/dist/json-rpc.js