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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +103 -93
  4. package/app/console-web.js +104 -94
  5. package/app/desktop-controller.mjs +103 -109
  6. package/app/host-runtime.mjs +10067 -8374
  7. package/app/plugins/antigravity/plugin.mjs +103 -93
  8. package/app/plugins/claude-code/plugin.mjs +103 -93
  9. package/app/plugins/codebuddy/plugin.mjs +103 -93
  10. package/app/plugins/codex-usage/plugin.mjs +103 -93
  11. package/app/plugins/copilot/plugin.mjs +103 -93
  12. package/app/plugins/cursor-cli/plugin.mjs +103 -93
  13. package/app/plugins/deepseek-harness/plugin.mjs +103 -93
  14. package/app/plugins/devin/plugin.mjs +103 -93
  15. package/app/plugins/enabled.json +0 -1
  16. package/app/plugins/grok/plugin.mjs +103 -93
  17. package/app/plugins/hermes/plugin.mjs +103 -93
  18. package/app/plugins/kimi-code/plugin.mjs +103 -93
  19. package/app/plugins/kiro-cli/plugin.mjs +103 -93
  20. package/app/plugins/omp/plugin.mjs +103 -93
  21. package/app/plugins/opencode/plugin.mjs +103 -93
  22. package/app/plugins/pi/plugin.mjs +103 -93
  23. package/app/plugins/qoder/plugin.mjs +103 -93
  24. package/app/plugins/qoder-cn/plugin.mjs +103 -93
  25. package/app/plugins/qwen-code/plugin.mjs +103 -93
  26. package/app/plugins/workbuddy/plugin.mjs +103 -93
  27. package/app/plugins/zcode/plugin.mjs +103 -93
  28. package/app/renderer-extension.js +122 -149
  29. package/app/web/assets/index-C3lniEH1.css +1 -0
  30. package/app/web/assets/index-aKvkfNJN.js +199 -0
  31. package/app/web/codexhost-settings.js +104 -94
  32. package/app/web/index.html +2 -2
  33. package/app/web/plugins/deepseek-ai__dsh-api-gateway/client.js +1 -1
  34. package/app/web/plugins/deepseek-ai__dsh-api-remotes/client.js +64 -64
  35. package/app/web/plugins/deepseek-ai__dsh-api-session-controller/client.js +69 -69
  36. package/app/web/plugins/deepseek-ai__dsh-client-ui-chat/client.js +2 -2
  37. package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +63 -62
  38. package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +85 -85
  39. package/app/web/plugins/deepseek-ai__dsh-client-ui-directory-picker-browse/client.js +10 -10
  40. package/app/web/plugins/deepseek-ai__dsh-client-ui-input-trigger/client.js +1 -1
  41. package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +3 -3
  42. package/app/web/plugins/deepseek-ai__dsh-client-ui-model-selection/client.js +2 -2
  43. package/app/web/plugins/deepseek-ai__dsh-client-ui-permission-presets/client.js +1 -1
  44. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +1 -1
  45. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar-right/client.js +55 -55
  46. package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +18 -18
  47. package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -8
  48. package/app/web/sw.js +55 -24
  49. package/app/web-modules/server.mjs +1091 -680
  50. package/bin/codexhost +0 -0
  51. package/libexec/codexhost-shim +0 -0
  52. package/libexec/codexhost-updater +0 -0
  53. package/package.json +1 -1
  54. package/app/plugins/codex-cli/manifest.json +0 -16
  55. package/app/plugins/codex-cli/plugin.mjs +0 -20374
  56. package/app/web/assets/index-CIeTchMu.css +0 -1
  57. package/app/web/assets/index-DeAPBQbV.js +0 -199
  58. /package/app/{plugins/codex-cli/assets/icon.png → web/codex.png} +0 -0
@@ -18863,7 +18863,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
18863
18863
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
18864
18864
  message: "Value must not be empty or whitespace"
18865
18865
  });
18866
- 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();
18866
+ 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();
18867
18867
  var harnessPermissionModeSchema = external_exports.object({
18868
18868
  id: harnessPermissionModeIdSchema,
18869
18869
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -19247,7 +19247,12 @@ var threadInspectionParamsSchema = external_exports.object({
19247
19247
  }).strict();
19248
19248
  var codexThreadInspectionSchema = external_exports.object({
19249
19249
  owner: external_exports.literal("codex"),
19250
- locked: external_exports.literal(true),
19250
+ locked: external_exports.boolean(),
19251
+ effectiveModel: harnessModelRefSchema.optional(),
19252
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
19253
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19254
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
19255
+ history: harnessHistoryCapabilitiesSchema.optional(),
19251
19256
  supportsThreadReferences: external_exports.literal(true).optional()
19252
19257
  }).strict();
19253
19258
  var externalThreadInspectionSchema = external_exports.object({
@@ -19469,7 +19474,8 @@ var clientThreadSnapshotSchema = external_exports.object({
19469
19474
  thread: external_exports.object({
19470
19475
  id: external_exports.string().min(1),
19471
19476
  cwd: external_exports.string(),
19472
- modelProvider: external_exports.literal("codexhost"),
19477
+ /** External rows use codexhost; native Codex rows retain their official provider. */
19478
+ modelProvider: external_exports.string().min(1),
19473
19479
  createdAt: external_exports.number(),
19474
19480
  updatedAt: external_exports.number(),
19475
19481
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -19483,6 +19489,11 @@ var clientThreadSnapshotSchema = external_exports.object({
19483
19489
  nextCursor: external_exports.string().nullable()
19484
19490
  }),
19485
19491
  configuration: external_exports.object({
19492
+ /** Native Codex model names are not external Harness transport refs. */
19493
+ native: external_exports.object({
19494
+ model: external_exports.string().min(1).max(1024).optional(),
19495
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
19496
+ }).optional(),
19486
19497
  effectiveModel: harnessModelRefSchema.optional(),
19487
19498
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19488
19499
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -19509,6 +19520,16 @@ var clientChannelResponseSchema = external_exports.object({
19509
19520
  result: record2
19510
19521
  });
19511
19522
 
19523
+ // ../../shared-contracts/dist/thread-catalog.js
19524
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
19525
+ var threadCatalogReadResultSchema = external_exports.object({
19526
+ threads: external_exports.array(jsonObjectSchema),
19527
+ ownership: external_exports.array(threadOwnershipSchema),
19528
+ /** Known archived IDs, including visible local external records even when their rows are
19529
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
19530
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
19531
+ }).strict();
19532
+
19512
19533
  // ../../shared-contracts/dist/voice.js
19513
19534
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
19514
19535
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -19724,93 +19745,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
19724
19745
  timeoutMinutes: 30
19725
19746
  });
19726
19747
 
19727
- // ../../shared-contracts/dist/harness-plugins.js
19728
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19729
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
19730
- var HARNESS_PLUGIN_LIMIT = 128;
19731
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
19732
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
19733
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
19734
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
19735
- 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");
19736
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
19737
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
19738
- var harnessInstallationGuideSchema = external_exports.object({
19739
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
19740
- before: localizedTextSchema.optional(),
19741
- after: localizedTextSchema.optional(),
19742
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
19743
- }).strict();
19744
- var pluginPresentationShape = {
19745
- id: installedHarnessPluginIdSchema,
19746
- name: external_exports.string().trim().min(1).max(128),
19747
- version: external_exports.string().min(1).max(128),
19748
- /** Capability-only plugin; omitted for existing session-capable plugins. */
19749
- kind: external_exports.literal("usage").optional(),
19750
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
19751
- iconStyle: external_exports.object({
19752
- vector: external_exports.object({
19753
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
19754
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
19755
- paths: external_exports.array(external_exports.object({
19756
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
19757
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
19758
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
19759
- }).strict()).min(1).max(32)
19760
- }).strict().optional(),
19761
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
19762
- borderRadius: external_exports.number().min(0).max(50).optional(),
19763
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
19764
- }).strict().optional(),
19765
- installation: harnessInstallationGuideSchema.optional(),
19766
- notice: localizedTextSchema.optional(),
19767
- /** The factory accepts a persisted local entrypoint through its construction context. */
19768
- launchCommand: external_exports.literal(true).optional(),
19769
- links: external_exports.object({
19770
- website: documentationUrlSchema.optional(),
19771
- documentation: documentationUrlSchema.optional(),
19772
- installation: documentationUrlSchema.optional()
19773
- }).strict().optional()
19774
- };
19775
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
19776
- message: "Plugin surfaces must be unique"
19777
- });
19778
- var harnessPluginManifestSchema = external_exports.object({
19779
- manifestVersion: external_exports.literal(1),
19780
- ...pluginPresentationShape,
19781
- adapterApiVersion: external_exports.number().int().positive(),
19782
- entry: relativeResourceSchema,
19783
- icon: relativeResourceSchema.optional(),
19784
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
19785
- surfaces: harnessPluginSurfacesSchema.optional()
19786
- }).strict();
19787
- 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);
19788
- var harnessPluginDescriptorSchema = external_exports.object({
19789
- ...pluginPresentationShape,
19790
- icon: harnessPluginIconSchema.optional()
19791
- }).strict();
19792
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
19793
- var harnessPluginListResultSchema = external_exports.object({
19794
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
19795
- }).strict();
19796
- var harnessPluginConfigurationSchema = external_exports.object({
19797
- version: external_exports.literal(1),
19798
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
19799
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
19800
- message: "Enabled plugin IDs must be unique",
19801
- path: ["enabled"]
19802
- });
19803
-
19804
19748
  // ../../shared-contracts/dist/harness-preferences.js
19805
19749
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
19806
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
19750
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
19807
19751
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
19808
19752
  model: harnessModelRefSchema.optional(),
19809
19753
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19810
19754
  permissionModeId: harnessPermissionModeIdSchema.optional()
19811
19755
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
19812
19756
  var newThreadDefaultsSchema = external_exports.strictObject({
19813
- lastHarness: installedHarnessPluginIdSchema.optional(),
19757
+ lastHarness: harnessIdSchema.optional(),
19814
19758
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
19815
19759
  });
19816
19760
  var modelId = external_exports.string().min(1).max(1024);
@@ -19831,19 +19775,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
19831
19775
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
19832
19776
  external_exports.strictObject({
19833
19777
  kind: external_exports.literal("favorite"),
19834
- harnessId: installedHarnessPluginIdSchema,
19778
+ harnessId: harnessIdSchema,
19835
19779
  modelId,
19836
19780
  enabled: external_exports.boolean()
19837
19781
  }),
19838
19782
  external_exports.strictObject({
19839
19783
  kind: external_exports.literal("favorites"),
19840
- harnessId: installedHarnessPluginIdSchema,
19784
+ harnessId: harnessIdSchema,
19841
19785
  modelIds: external_exports.array(modelId).max(2048)
19842
19786
  }),
19843
19787
  external_exports.strictObject({
19844
19788
  kind: external_exports.literal("newThread"),
19845
- lastHarness: installedHarnessPluginIdSchema.optional(),
19846
- harnessId: installedHarnessPluginIdSchema.optional(),
19789
+ lastHarness: harnessIdSchema.optional(),
19790
+ harnessId: harnessIdSchema.optional(),
19847
19791
  configuration: harnessDefaultConfigurationSchema.optional()
19848
19792
  })
19849
19793
  ]);
@@ -19859,12 +19803,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
19859
19803
  code: "custom",
19860
19804
  message: "A default Harness or complete configuration is required"
19861
19805
  });
19862
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
19863
- if (harnessId === "codex")
19864
- ctx.addIssue({
19865
- code: "custom",
19866
- message: "Official Codex is not an external Harness"
19867
- });
19868
19806
  }
19869
19807
  });
19870
19808
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -20241,6 +20179,76 @@ var harnessAccountListResultSchema = external_exports.object({
20241
20179
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
20242
20180
  }).strict();
20243
20181
 
20182
+ // ../../shared-contracts/dist/harness-plugins.js
20183
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
20184
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
20185
+ var HARNESS_PLUGIN_LIMIT = 128;
20186
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
20187
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
20188
+ 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");
20189
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
20190
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
20191
+ var harnessInstallationGuideSchema = external_exports.object({
20192
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
20193
+ before: localizedTextSchema.optional(),
20194
+ after: localizedTextSchema.optional(),
20195
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
20196
+ }).strict();
20197
+ var pluginPresentationShape = {
20198
+ id: installedHarnessPluginIdSchema,
20199
+ name: external_exports.string().trim().min(1).max(128),
20200
+ version: external_exports.string().min(1).max(128),
20201
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
20202
+ kind: external_exports.literal("usage").optional(),
20203
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
20204
+ iconStyle: external_exports.object({
20205
+ vector: external_exports.object({
20206
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
20207
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
20208
+ paths: external_exports.array(external_exports.object({
20209
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
20210
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
20211
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
20212
+ }).strict()).min(1).max(32)
20213
+ }).strict().optional(),
20214
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
20215
+ borderRadius: external_exports.number().min(0).max(50).optional(),
20216
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
20217
+ }).strict().optional(),
20218
+ installation: harnessInstallationGuideSchema.optional(),
20219
+ notice: localizedTextSchema.optional(),
20220
+ /** The factory accepts a persisted local entrypoint through its construction context. */
20221
+ launchCommand: external_exports.literal(true).optional(),
20222
+ links: external_exports.object({
20223
+ website: documentationUrlSchema.optional(),
20224
+ documentation: documentationUrlSchema.optional(),
20225
+ installation: documentationUrlSchema.optional()
20226
+ }).strict().optional()
20227
+ };
20228
+ var harnessPluginManifestSchema = external_exports.object({
20229
+ manifestVersion: external_exports.literal(1),
20230
+ ...pluginPresentationShape,
20231
+ adapterApiVersion: external_exports.number().int().positive(),
20232
+ entry: relativeResourceSchema,
20233
+ icon: relativeResourceSchema.optional()
20234
+ }).strict();
20235
+ 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);
20236
+ var harnessPluginDescriptorSchema = external_exports.object({
20237
+ ...pluginPresentationShape,
20238
+ icon: harnessPluginIconSchema.optional()
20239
+ }).strict();
20240
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
20241
+ var harnessPluginListResultSchema = external_exports.object({
20242
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
20243
+ }).strict();
20244
+ var harnessPluginConfigurationSchema = external_exports.object({
20245
+ version: external_exports.literal(1),
20246
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
20247
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
20248
+ message: "Enabled plugin IDs must be unique",
20249
+ path: ["enabled"]
20250
+ });
20251
+
20244
20252
  // ../../shared-contracts/dist/harness-route.js
20245
20253
  var harnessPluginRouteSchema = external_exports.object({
20246
20254
  harnessId: harnessPluginIdSchema,
@@ -20438,6 +20446,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
20438
20446
  }).strict();
20439
20447
  var harnessCommandCatalogSchema = external_exports.object({
20440
20448
  commands: external_exports.array(harnessCommandDescriptorSchema),
20449
+ /** Partial discovery failures; valid commands remain available. */
20450
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
20441
20451
  /**
20442
20452
  * `live` when the catalog includes what a native Session reports for its
20443
20453
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -20473,7 +20483,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
20473
20483
  }).strict();
20474
20484
  var threadCommandExecuteResultSchema = external_exports.object({
20475
20485
  accepted: external_exports.literal(true),
20476
- turnId: hostTurnIdSchema
20486
+ turnId: hostTurnIdSchema.optional()
20477
20487
  }).strict();
20478
20488
 
20479
20489
  // ../../shared-contracts/dist/json-rpc.js
@@ -14620,7 +14620,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14620
14620
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14621
14621
  message: "Value must not be empty or whitespace"
14622
14622
  });
14623
- 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();
14623
+ 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();
14624
14624
  var harnessPermissionModeSchema = external_exports.object({
14625
14625
  id: harnessPermissionModeIdSchema,
14626
14626
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15004,7 +15004,12 @@ var threadInspectionParamsSchema = external_exports.object({
15004
15004
  }).strict();
15005
15005
  var codexThreadInspectionSchema = external_exports.object({
15006
15006
  owner: external_exports.literal("codex"),
15007
- locked: external_exports.literal(true),
15007
+ locked: external_exports.boolean(),
15008
+ effectiveModel: harnessModelRefSchema.optional(),
15009
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15010
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15011
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15012
+ history: harnessHistoryCapabilitiesSchema.optional(),
15008
15013
  supportsThreadReferences: external_exports.literal(true).optional()
15009
15014
  }).strict();
15010
15015
  var externalThreadInspectionSchema = external_exports.object({
@@ -15226,7 +15231,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15226
15231
  thread: external_exports.object({
15227
15232
  id: external_exports.string().min(1),
15228
15233
  cwd: external_exports.string(),
15229
- modelProvider: external_exports.literal("codexhost"),
15234
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15235
+ modelProvider: external_exports.string().min(1),
15230
15236
  createdAt: external_exports.number(),
15231
15237
  updatedAt: external_exports.number(),
15232
15238
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15240,6 +15246,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15240
15246
  nextCursor: external_exports.string().nullable()
15241
15247
  }),
15242
15248
  configuration: external_exports.object({
15249
+ /** Native Codex model names are not external Harness transport refs. */
15250
+ native: external_exports.object({
15251
+ model: external_exports.string().min(1).max(1024).optional(),
15252
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15253
+ }).optional(),
15243
15254
  effectiveModel: harnessModelRefSchema.optional(),
15244
15255
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15245
15256
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15266,6 +15277,16 @@ var clientChannelResponseSchema = external_exports.object({
15266
15277
  result: record2
15267
15278
  });
15268
15279
 
15280
+ // ../../shared-contracts/dist/thread-catalog.js
15281
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15282
+ var threadCatalogReadResultSchema = external_exports.object({
15283
+ threads: external_exports.array(jsonObjectSchema),
15284
+ ownership: external_exports.array(threadOwnershipSchema),
15285
+ /** Known archived IDs, including visible local external records even when their rows are
15286
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15287
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15288
+ }).strict();
15289
+
15269
15290
  // ../../shared-contracts/dist/voice.js
15270
15291
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15271
15292
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15481,93 +15502,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15481
15502
  timeoutMinutes: 30
15482
15503
  });
15483
15504
 
15484
- // ../../shared-contracts/dist/harness-plugins.js
15485
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15486
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15487
- var HARNESS_PLUGIN_LIMIT = 128;
15488
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15489
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15490
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15491
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15492
- 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");
15493
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15494
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15495
- var harnessInstallationGuideSchema = external_exports.object({
15496
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15497
- before: localizedTextSchema.optional(),
15498
- after: localizedTextSchema.optional(),
15499
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15500
- }).strict();
15501
- var pluginPresentationShape = {
15502
- id: installedHarnessPluginIdSchema,
15503
- name: external_exports.string().trim().min(1).max(128),
15504
- version: external_exports.string().min(1).max(128),
15505
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15506
- kind: external_exports.literal("usage").optional(),
15507
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15508
- iconStyle: external_exports.object({
15509
- vector: external_exports.object({
15510
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15511
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15512
- paths: external_exports.array(external_exports.object({
15513
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15514
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15515
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15516
- }).strict()).min(1).max(32)
15517
- }).strict().optional(),
15518
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15519
- borderRadius: external_exports.number().min(0).max(50).optional(),
15520
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15521
- }).strict().optional(),
15522
- installation: harnessInstallationGuideSchema.optional(),
15523
- notice: localizedTextSchema.optional(),
15524
- /** The factory accepts a persisted local entrypoint through its construction context. */
15525
- launchCommand: external_exports.literal(true).optional(),
15526
- links: external_exports.object({
15527
- website: documentationUrlSchema.optional(),
15528
- documentation: documentationUrlSchema.optional(),
15529
- installation: documentationUrlSchema.optional()
15530
- }).strict().optional()
15531
- };
15532
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15533
- message: "Plugin surfaces must be unique"
15534
- });
15535
- var harnessPluginManifestSchema = external_exports.object({
15536
- manifestVersion: external_exports.literal(1),
15537
- ...pluginPresentationShape,
15538
- adapterApiVersion: external_exports.number().int().positive(),
15539
- entry: relativeResourceSchema,
15540
- icon: relativeResourceSchema.optional(),
15541
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15542
- surfaces: harnessPluginSurfacesSchema.optional()
15543
- }).strict();
15544
- 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);
15545
- var harnessPluginDescriptorSchema = external_exports.object({
15546
- ...pluginPresentationShape,
15547
- icon: harnessPluginIconSchema.optional()
15548
- }).strict();
15549
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15550
- var harnessPluginListResultSchema = external_exports.object({
15551
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15552
- }).strict();
15553
- var harnessPluginConfigurationSchema = external_exports.object({
15554
- version: external_exports.literal(1),
15555
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15556
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15557
- message: "Enabled plugin IDs must be unique",
15558
- path: ["enabled"]
15559
- });
15560
-
15561
15505
  // ../../shared-contracts/dist/harness-preferences.js
15562
15506
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15563
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15507
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15564
15508
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15565
15509
  model: harnessModelRefSchema.optional(),
15566
15510
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15567
15511
  permissionModeId: harnessPermissionModeIdSchema.optional()
15568
15512
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15569
15513
  var newThreadDefaultsSchema = external_exports.strictObject({
15570
- lastHarness: installedHarnessPluginIdSchema.optional(),
15514
+ lastHarness: harnessIdSchema.optional(),
15571
15515
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15572
15516
  });
15573
15517
  var modelId = external_exports.string().min(1).max(1024);
@@ -15588,19 +15532,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15588
15532
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15589
15533
  external_exports.strictObject({
15590
15534
  kind: external_exports.literal("favorite"),
15591
- harnessId: installedHarnessPluginIdSchema,
15535
+ harnessId: harnessIdSchema,
15592
15536
  modelId,
15593
15537
  enabled: external_exports.boolean()
15594
15538
  }),
15595
15539
  external_exports.strictObject({
15596
15540
  kind: external_exports.literal("favorites"),
15597
- harnessId: installedHarnessPluginIdSchema,
15541
+ harnessId: harnessIdSchema,
15598
15542
  modelIds: external_exports.array(modelId).max(2048)
15599
15543
  }),
15600
15544
  external_exports.strictObject({
15601
15545
  kind: external_exports.literal("newThread"),
15602
- lastHarness: installedHarnessPluginIdSchema.optional(),
15603
- harnessId: installedHarnessPluginIdSchema.optional(),
15546
+ lastHarness: harnessIdSchema.optional(),
15547
+ harnessId: harnessIdSchema.optional(),
15604
15548
  configuration: harnessDefaultConfigurationSchema.optional()
15605
15549
  })
15606
15550
  ]);
@@ -15616,12 +15560,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15616
15560
  code: "custom",
15617
15561
  message: "A default Harness or complete configuration is required"
15618
15562
  });
15619
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15620
- if (harnessId === "codex")
15621
- ctx.addIssue({
15622
- code: "custom",
15623
- message: "Official Codex is not an external Harness"
15624
- });
15625
15563
  }
15626
15564
  });
15627
15565
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -15998,6 +15936,76 @@ var harnessAccountListResultSchema = external_exports.object({
15998
15936
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
15999
15937
  }).strict();
16000
15938
 
15939
+ // ../../shared-contracts/dist/harness-plugins.js
15940
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15941
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15942
+ var HARNESS_PLUGIN_LIMIT = 128;
15943
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15944
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15945
+ 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");
15946
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15947
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15948
+ var harnessInstallationGuideSchema = external_exports.object({
15949
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15950
+ before: localizedTextSchema.optional(),
15951
+ after: localizedTextSchema.optional(),
15952
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15953
+ }).strict();
15954
+ var pluginPresentationShape = {
15955
+ id: installedHarnessPluginIdSchema,
15956
+ name: external_exports.string().trim().min(1).max(128),
15957
+ version: external_exports.string().min(1).max(128),
15958
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15959
+ kind: external_exports.literal("usage").optional(),
15960
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15961
+ iconStyle: external_exports.object({
15962
+ vector: external_exports.object({
15963
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15964
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15965
+ paths: external_exports.array(external_exports.object({
15966
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15967
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15968
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15969
+ }).strict()).min(1).max(32)
15970
+ }).strict().optional(),
15971
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15972
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15973
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15974
+ }).strict().optional(),
15975
+ installation: harnessInstallationGuideSchema.optional(),
15976
+ notice: localizedTextSchema.optional(),
15977
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15978
+ launchCommand: external_exports.literal(true).optional(),
15979
+ links: external_exports.object({
15980
+ website: documentationUrlSchema.optional(),
15981
+ documentation: documentationUrlSchema.optional(),
15982
+ installation: documentationUrlSchema.optional()
15983
+ }).strict().optional()
15984
+ };
15985
+ var harnessPluginManifestSchema = external_exports.object({
15986
+ manifestVersion: external_exports.literal(1),
15987
+ ...pluginPresentationShape,
15988
+ adapterApiVersion: external_exports.number().int().positive(),
15989
+ entry: relativeResourceSchema,
15990
+ icon: relativeResourceSchema.optional()
15991
+ }).strict();
15992
+ 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);
15993
+ var harnessPluginDescriptorSchema = external_exports.object({
15994
+ ...pluginPresentationShape,
15995
+ icon: harnessPluginIconSchema.optional()
15996
+ }).strict();
15997
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
15998
+ var harnessPluginListResultSchema = external_exports.object({
15999
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16000
+ }).strict();
16001
+ var harnessPluginConfigurationSchema = external_exports.object({
16002
+ version: external_exports.literal(1),
16003
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16004
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16005
+ message: "Enabled plugin IDs must be unique",
16006
+ path: ["enabled"]
16007
+ });
16008
+
16001
16009
  // ../../shared-contracts/dist/harness-route.js
16002
16010
  var harnessPluginRouteSchema = external_exports.object({
16003
16011
  harnessId: harnessPluginIdSchema,
@@ -16191,6 +16199,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16191
16199
  }).strict();
16192
16200
  var harnessCommandCatalogSchema = external_exports.object({
16193
16201
  commands: external_exports.array(harnessCommandDescriptorSchema),
16202
+ /** Partial discovery failures; valid commands remain available. */
16203
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16194
16204
  /**
16195
16205
  * `live` when the catalog includes what a native Session reports for its
16196
16206
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16226,7 +16236,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16226
16236
  }).strict();
16227
16237
  var threadCommandExecuteResultSchema = external_exports.object({
16228
16238
  accepted: external_exports.literal(true),
16229
- turnId: hostTurnIdSchema
16239
+ turnId: hostTurnIdSchema.optional()
16230
16240
  }).strict();
16231
16241
 
16232
16242
  // ../../shared-contracts/dist/json-rpc.js
@@ -19,7 +19,6 @@
19
19
  "qoder-cn",
20
20
  "kimi-code",
21
21
  "zcode",
22
- "codex-cli",
23
22
  "copilot",
24
23
  "codex-usage"
25
24
  ]