@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
@@ -15162,7 +15162,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15162
15162
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15163
15163
  message: "Value must not be empty or whitespace"
15164
15164
  });
15165
- var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
15165
+ var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
15166
15166
  var harnessPermissionModeSchema = external_exports.object({
15167
15167
  id: harnessPermissionModeIdSchema,
15168
15168
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15546,7 +15546,12 @@ var threadInspectionParamsSchema = external_exports.object({
15546
15546
  }).strict();
15547
15547
  var codexThreadInspectionSchema = external_exports.object({
15548
15548
  owner: external_exports.literal("codex"),
15549
- locked: external_exports.literal(true),
15549
+ locked: external_exports.boolean(),
15550
+ effectiveModel: harnessModelRefSchema.optional(),
15551
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15552
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15553
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15554
+ history: harnessHistoryCapabilitiesSchema.optional(),
15550
15555
  supportsThreadReferences: external_exports.literal(true).optional()
15551
15556
  }).strict();
15552
15557
  var externalThreadInspectionSchema = external_exports.object({
@@ -15768,7 +15773,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15768
15773
  thread: external_exports.object({
15769
15774
  id: external_exports.string().min(1),
15770
15775
  cwd: external_exports.string(),
15771
- modelProvider: external_exports.literal("codexhost"),
15776
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15777
+ modelProvider: external_exports.string().min(1),
15772
15778
  createdAt: external_exports.number(),
15773
15779
  updatedAt: external_exports.number(),
15774
15780
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15782,6 +15788,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15782
15788
  nextCursor: external_exports.string().nullable()
15783
15789
  }),
15784
15790
  configuration: external_exports.object({
15791
+ /** Native Codex model names are not external Harness transport refs. */
15792
+ native: external_exports.object({
15793
+ model: external_exports.string().min(1).max(1024).optional(),
15794
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15795
+ }).optional(),
15785
15796
  effectiveModel: harnessModelRefSchema.optional(),
15786
15797
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15787
15798
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15808,6 +15819,16 @@ var clientChannelResponseSchema = external_exports.object({
15808
15819
  result: record2
15809
15820
  });
15810
15821
 
15822
+ // ../../shared-contracts/dist/thread-catalog.js
15823
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15824
+ var threadCatalogReadResultSchema = external_exports.object({
15825
+ threads: external_exports.array(jsonObjectSchema),
15826
+ ownership: external_exports.array(threadOwnershipSchema),
15827
+ /** Known archived IDs, including visible local external records even when their rows are
15828
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15829
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15830
+ }).strict();
15831
+
15811
15832
  // ../../shared-contracts/dist/voice.js
15812
15833
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15813
15834
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16023,93 +16044,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16023
16044
  timeoutMinutes: 30
16024
16045
  });
16025
16046
 
16026
- // ../../shared-contracts/dist/harness-plugins.js
16027
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16028
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16029
- var HARNESS_PLUGIN_LIMIT = 128;
16030
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16031
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16032
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16033
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16034
- var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
16035
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16036
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16037
- var harnessInstallationGuideSchema = external_exports.object({
16038
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16039
- before: localizedTextSchema.optional(),
16040
- after: localizedTextSchema.optional(),
16041
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16042
- }).strict();
16043
- var pluginPresentationShape = {
16044
- id: installedHarnessPluginIdSchema,
16045
- name: external_exports.string().trim().min(1).max(128),
16046
- version: external_exports.string().min(1).max(128),
16047
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16048
- kind: external_exports.literal("usage").optional(),
16049
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16050
- iconStyle: external_exports.object({
16051
- vector: external_exports.object({
16052
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16053
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16054
- paths: external_exports.array(external_exports.object({
16055
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16056
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16057
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16058
- }).strict()).min(1).max(32)
16059
- }).strict().optional(),
16060
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16061
- borderRadius: external_exports.number().min(0).max(50).optional(),
16062
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16063
- }).strict().optional(),
16064
- installation: harnessInstallationGuideSchema.optional(),
16065
- notice: localizedTextSchema.optional(),
16066
- /** The factory accepts a persisted local entrypoint through its construction context. */
16067
- launchCommand: external_exports.literal(true).optional(),
16068
- links: external_exports.object({
16069
- website: documentationUrlSchema.optional(),
16070
- documentation: documentationUrlSchema.optional(),
16071
- installation: documentationUrlSchema.optional()
16072
- }).strict().optional()
16073
- };
16074
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16075
- message: "Plugin surfaces must be unique"
16076
- });
16077
- var harnessPluginManifestSchema = external_exports.object({
16078
- manifestVersion: external_exports.literal(1),
16079
- ...pluginPresentationShape,
16080
- adapterApiVersion: external_exports.number().int().positive(),
16081
- entry: relativeResourceSchema,
16082
- icon: relativeResourceSchema.optional(),
16083
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16084
- surfaces: harnessPluginSurfacesSchema.optional()
16085
- }).strict();
16086
- var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
16087
- var harnessPluginDescriptorSchema = external_exports.object({
16088
- ...pluginPresentationShape,
16089
- icon: harnessPluginIconSchema.optional()
16090
- }).strict();
16091
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16092
- var harnessPluginListResultSchema = external_exports.object({
16093
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16094
- }).strict();
16095
- var harnessPluginConfigurationSchema = external_exports.object({
16096
- version: external_exports.literal(1),
16097
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16098
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16099
- message: "Enabled plugin IDs must be unique",
16100
- path: ["enabled"]
16101
- });
16102
-
16103
16047
  // ../../shared-contracts/dist/harness-preferences.js
16104
16048
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16105
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16049
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16106
16050
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16107
16051
  model: harnessModelRefSchema.optional(),
16108
16052
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16109
16053
  permissionModeId: harnessPermissionModeIdSchema.optional()
16110
16054
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16111
16055
  var newThreadDefaultsSchema = external_exports.strictObject({
16112
- lastHarness: installedHarnessPluginIdSchema.optional(),
16056
+ lastHarness: harnessIdSchema.optional(),
16113
16057
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16114
16058
  });
16115
16059
  var modelId = external_exports.string().min(1).max(1024);
@@ -16130,19 +16074,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16130
16074
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16131
16075
  external_exports.strictObject({
16132
16076
  kind: external_exports.literal("favorite"),
16133
- harnessId: installedHarnessPluginIdSchema,
16077
+ harnessId: harnessIdSchema,
16134
16078
  modelId,
16135
16079
  enabled: external_exports.boolean()
16136
16080
  }),
16137
16081
  external_exports.strictObject({
16138
16082
  kind: external_exports.literal("favorites"),
16139
- harnessId: installedHarnessPluginIdSchema,
16083
+ harnessId: harnessIdSchema,
16140
16084
  modelIds: external_exports.array(modelId).max(2048)
16141
16085
  }),
16142
16086
  external_exports.strictObject({
16143
16087
  kind: external_exports.literal("newThread"),
16144
- lastHarness: installedHarnessPluginIdSchema.optional(),
16145
- harnessId: installedHarnessPluginIdSchema.optional(),
16088
+ lastHarness: harnessIdSchema.optional(),
16089
+ harnessId: harnessIdSchema.optional(),
16146
16090
  configuration: harnessDefaultConfigurationSchema.optional()
16147
16091
  })
16148
16092
  ]);
@@ -16158,12 +16102,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16158
16102
  code: "custom",
16159
16103
  message: "A default Harness or complete configuration is required"
16160
16104
  });
16161
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16162
- if (harnessId === "codex")
16163
- ctx.addIssue({
16164
- code: "custom",
16165
- message: "Official Codex is not an external Harness"
16166
- });
16167
16105
  }
16168
16106
  });
16169
16107
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16540,6 +16478,76 @@ var harnessAccountListResultSchema = external_exports.object({
16540
16478
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16541
16479
  }).strict();
16542
16480
 
16481
+ // ../../shared-contracts/dist/harness-plugins.js
16482
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16483
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16484
+ var HARNESS_PLUGIN_LIMIT = 128;
16485
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16486
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16487
+ 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");
16488
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16489
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16490
+ var harnessInstallationGuideSchema = external_exports.object({
16491
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16492
+ before: localizedTextSchema.optional(),
16493
+ after: localizedTextSchema.optional(),
16494
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16495
+ }).strict();
16496
+ var pluginPresentationShape = {
16497
+ id: installedHarnessPluginIdSchema,
16498
+ name: external_exports.string().trim().min(1).max(128),
16499
+ version: external_exports.string().min(1).max(128),
16500
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16501
+ kind: external_exports.literal("usage").optional(),
16502
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16503
+ iconStyle: external_exports.object({
16504
+ vector: external_exports.object({
16505
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16506
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16507
+ paths: external_exports.array(external_exports.object({
16508
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16509
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16510
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16511
+ }).strict()).min(1).max(32)
16512
+ }).strict().optional(),
16513
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16514
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16515
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16516
+ }).strict().optional(),
16517
+ installation: harnessInstallationGuideSchema.optional(),
16518
+ notice: localizedTextSchema.optional(),
16519
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16520
+ launchCommand: external_exports.literal(true).optional(),
16521
+ links: external_exports.object({
16522
+ website: documentationUrlSchema.optional(),
16523
+ documentation: documentationUrlSchema.optional(),
16524
+ installation: documentationUrlSchema.optional()
16525
+ }).strict().optional()
16526
+ };
16527
+ var harnessPluginManifestSchema = external_exports.object({
16528
+ manifestVersion: external_exports.literal(1),
16529
+ ...pluginPresentationShape,
16530
+ adapterApiVersion: external_exports.number().int().positive(),
16531
+ entry: relativeResourceSchema,
16532
+ icon: relativeResourceSchema.optional()
16533
+ }).strict();
16534
+ 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);
16535
+ var harnessPluginDescriptorSchema = external_exports.object({
16536
+ ...pluginPresentationShape,
16537
+ icon: harnessPluginIconSchema.optional()
16538
+ }).strict();
16539
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16540
+ var harnessPluginListResultSchema = external_exports.object({
16541
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16542
+ }).strict();
16543
+ var harnessPluginConfigurationSchema = external_exports.object({
16544
+ version: external_exports.literal(1),
16545
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16546
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16547
+ message: "Enabled plugin IDs must be unique",
16548
+ path: ["enabled"]
16549
+ });
16550
+
16543
16551
  // ../../shared-contracts/dist/harness-route.js
16544
16552
  var harnessPluginRouteSchema = external_exports.object({
16545
16553
  harnessId: harnessPluginIdSchema,
@@ -16733,6 +16741,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16733
16741
  }).strict();
16734
16742
  var harnessCommandCatalogSchema = external_exports.object({
16735
16743
  commands: external_exports.array(harnessCommandDescriptorSchema),
16744
+ /** Partial discovery failures; valid commands remain available. */
16745
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16736
16746
  /**
16737
16747
  * `live` when the catalog includes what a native Session reports for its
16738
16748
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16768,7 +16778,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16768
16778
  }).strict();
16769
16779
  var threadCommandExecuteResultSchema = external_exports.object({
16770
16780
  accepted: external_exports.literal(true),
16771
- turnId: hostTurnIdSchema
16781
+ turnId: hostTurnIdSchema.optional()
16772
16782
  }).strict();
16773
16783
 
16774
16784
  // ../../shared-contracts/dist/json-rpc.js
@@ -27608,7 +27608,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
27608
27608
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
27609
27609
  message: "Value must not be empty or whitespace"
27610
27610
  });
27611
- 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();
27611
+ 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();
27612
27612
  var harnessPermissionModeSchema = external_exports.object({
27613
27613
  id: harnessPermissionModeIdSchema,
27614
27614
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -27992,7 +27992,12 @@ var threadInspectionParamsSchema = external_exports.object({
27992
27992
  }).strict();
27993
27993
  var codexThreadInspectionSchema = external_exports.object({
27994
27994
  owner: external_exports.literal("codex"),
27995
- locked: external_exports.literal(true),
27995
+ locked: external_exports.boolean(),
27996
+ effectiveModel: harnessModelRefSchema.optional(),
27997
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
27998
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
27999
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
28000
+ history: harnessHistoryCapabilitiesSchema.optional(),
27996
28001
  supportsThreadReferences: external_exports.literal(true).optional()
27997
28002
  }).strict();
27998
28003
  var externalThreadInspectionSchema = external_exports.object({
@@ -28214,7 +28219,8 @@ var clientThreadSnapshotSchema = external_exports.object({
28214
28219
  thread: external_exports.object({
28215
28220
  id: external_exports.string().min(1),
28216
28221
  cwd: external_exports.string(),
28217
- modelProvider: external_exports.literal("codexhost"),
28222
+ /** External rows use codexhost; native Codex rows retain their official provider. */
28223
+ modelProvider: external_exports.string().min(1),
28218
28224
  createdAt: external_exports.number(),
28219
28225
  updatedAt: external_exports.number(),
28220
28226
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -28228,6 +28234,11 @@ var clientThreadSnapshotSchema = external_exports.object({
28228
28234
  nextCursor: external_exports.string().nullable()
28229
28235
  }),
28230
28236
  configuration: external_exports.object({
28237
+ /** Native Codex model names are not external Harness transport refs. */
28238
+ native: external_exports.object({
28239
+ model: external_exports.string().min(1).max(1024).optional(),
28240
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
28241
+ }).optional(),
28231
28242
  effectiveModel: harnessModelRefSchema.optional(),
28232
28243
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
28233
28244
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -28254,6 +28265,16 @@ var clientChannelResponseSchema = external_exports.object({
28254
28265
  result: record2
28255
28266
  });
28256
28267
 
28268
+ // ../../shared-contracts/dist/thread-catalog.js
28269
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
28270
+ var threadCatalogReadResultSchema = external_exports.object({
28271
+ threads: external_exports.array(jsonObjectSchema),
28272
+ ownership: external_exports.array(threadOwnershipSchema),
28273
+ /** Known archived IDs, including visible local external records even when their rows are
28274
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
28275
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
28276
+ }).strict();
28277
+
28257
28278
  // ../../shared-contracts/dist/voice.js
28258
28279
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
28259
28280
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -28469,93 +28490,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
28469
28490
  timeoutMinutes: 30
28470
28491
  });
28471
28492
 
28472
- // ../../shared-contracts/dist/harness-plugins.js
28473
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
28474
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
28475
- var HARNESS_PLUGIN_LIMIT = 128;
28476
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
28477
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
28478
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
28479
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id3) => id3 !== "codex", "The official Codex identity is reserved");
28480
- 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");
28481
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
28482
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
28483
- var harnessInstallationGuideSchema = external_exports.object({
28484
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
28485
- before: localizedTextSchema.optional(),
28486
- after: localizedTextSchema.optional(),
28487
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
28488
- }).strict();
28489
- var pluginPresentationShape = {
28490
- id: installedHarnessPluginIdSchema,
28491
- name: external_exports.string().trim().min(1).max(128),
28492
- version: external_exports.string().min(1).max(128),
28493
- /** Capability-only plugin; omitted for existing session-capable plugins. */
28494
- kind: external_exports.literal("usage").optional(),
28495
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
28496
- iconStyle: external_exports.object({
28497
- vector: external_exports.object({
28498
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
28499
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
28500
- paths: external_exports.array(external_exports.object({
28501
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
28502
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
28503
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
28504
- }).strict()).min(1).max(32)
28505
- }).strict().optional(),
28506
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
28507
- borderRadius: external_exports.number().min(0).max(50).optional(),
28508
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
28509
- }).strict().optional(),
28510
- installation: harnessInstallationGuideSchema.optional(),
28511
- notice: localizedTextSchema.optional(),
28512
- /** The factory accepts a persisted local entrypoint through its construction context. */
28513
- launchCommand: external_exports.literal(true).optional(),
28514
- links: external_exports.object({
28515
- website: documentationUrlSchema.optional(),
28516
- documentation: documentationUrlSchema.optional(),
28517
- installation: documentationUrlSchema.optional()
28518
- }).strict().optional()
28519
- };
28520
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
28521
- message: "Plugin surfaces must be unique"
28522
- });
28523
- var harnessPluginManifestSchema = external_exports.object({
28524
- manifestVersion: external_exports.literal(1),
28525
- ...pluginPresentationShape,
28526
- adapterApiVersion: external_exports.number().int().positive(),
28527
- entry: relativeResourceSchema,
28528
- icon: relativeResourceSchema.optional(),
28529
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
28530
- surfaces: harnessPluginSurfacesSchema.optional()
28531
- }).strict();
28532
- 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);
28533
- var harnessPluginDescriptorSchema = external_exports.object({
28534
- ...pluginPresentationShape,
28535
- icon: harnessPluginIconSchema.optional()
28536
- }).strict();
28537
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
28538
- var harnessPluginListResultSchema = external_exports.object({
28539
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
28540
- }).strict();
28541
- var harnessPluginConfigurationSchema = external_exports.object({
28542
- version: external_exports.literal(1),
28543
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
28544
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
28545
- message: "Enabled plugin IDs must be unique",
28546
- path: ["enabled"]
28547
- });
28548
-
28549
28493
  // ../../shared-contracts/dist/harness-preferences.js
28550
28494
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
28551
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id3) => String(id3));
28495
+ var preferenceHarnessKey = harnessIdSchema.transform((id3) => String(id3));
28552
28496
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
28553
28497
  model: harnessModelRefSchema.optional(),
28554
28498
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
28555
28499
  permissionModeId: harnessPermissionModeIdSchema.optional()
28556
28500
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
28557
28501
  var newThreadDefaultsSchema = external_exports.strictObject({
28558
- lastHarness: installedHarnessPluginIdSchema.optional(),
28502
+ lastHarness: harnessIdSchema.optional(),
28559
28503
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
28560
28504
  });
28561
28505
  var modelId = external_exports.string().min(1).max(1024);
@@ -28576,19 +28520,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
28576
28520
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
28577
28521
  external_exports.strictObject({
28578
28522
  kind: external_exports.literal("favorite"),
28579
- harnessId: installedHarnessPluginIdSchema,
28523
+ harnessId: harnessIdSchema,
28580
28524
  modelId,
28581
28525
  enabled: external_exports.boolean()
28582
28526
  }),
28583
28527
  external_exports.strictObject({
28584
28528
  kind: external_exports.literal("favorites"),
28585
- harnessId: installedHarnessPluginIdSchema,
28529
+ harnessId: harnessIdSchema,
28586
28530
  modelIds: external_exports.array(modelId).max(2048)
28587
28531
  }),
28588
28532
  external_exports.strictObject({
28589
28533
  kind: external_exports.literal("newThread"),
28590
- lastHarness: installedHarnessPluginIdSchema.optional(),
28591
- harnessId: installedHarnessPluginIdSchema.optional(),
28534
+ lastHarness: harnessIdSchema.optional(),
28535
+ harnessId: harnessIdSchema.optional(),
28592
28536
  configuration: harnessDefaultConfigurationSchema.optional()
28593
28537
  })
28594
28538
  ]);
@@ -28604,12 +28548,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
28604
28548
  code: "custom",
28605
28549
  message: "A default Harness or complete configuration is required"
28606
28550
  });
28607
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
28608
- if (harnessId === "codex")
28609
- ctx.addIssue({
28610
- code: "custom",
28611
- message: "Official Codex is not an external Harness"
28612
- });
28613
28551
  }
28614
28552
  });
28615
28553
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -28986,6 +28924,76 @@ var harnessAccountListResultSchema = external_exports.object({
28986
28924
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
28987
28925
  }).strict();
28988
28926
 
28927
+ // ../../shared-contracts/dist/harness-plugins.js
28928
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
28929
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
28930
+ var HARNESS_PLUGIN_LIMIT = 128;
28931
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
28932
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id3) => id3 !== "codex", "The official Codex identity is reserved");
28933
+ 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");
28934
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
28935
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
28936
+ var harnessInstallationGuideSchema = external_exports.object({
28937
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
28938
+ before: localizedTextSchema.optional(),
28939
+ after: localizedTextSchema.optional(),
28940
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
28941
+ }).strict();
28942
+ var pluginPresentationShape = {
28943
+ id: installedHarnessPluginIdSchema,
28944
+ name: external_exports.string().trim().min(1).max(128),
28945
+ version: external_exports.string().min(1).max(128),
28946
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
28947
+ kind: external_exports.literal("usage").optional(),
28948
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
28949
+ iconStyle: external_exports.object({
28950
+ vector: external_exports.object({
28951
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
28952
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
28953
+ paths: external_exports.array(external_exports.object({
28954
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
28955
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
28956
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
28957
+ }).strict()).min(1).max(32)
28958
+ }).strict().optional(),
28959
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
28960
+ borderRadius: external_exports.number().min(0).max(50).optional(),
28961
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
28962
+ }).strict().optional(),
28963
+ installation: harnessInstallationGuideSchema.optional(),
28964
+ notice: localizedTextSchema.optional(),
28965
+ /** The factory accepts a persisted local entrypoint through its construction context. */
28966
+ launchCommand: external_exports.literal(true).optional(),
28967
+ links: external_exports.object({
28968
+ website: documentationUrlSchema.optional(),
28969
+ documentation: documentationUrlSchema.optional(),
28970
+ installation: documentationUrlSchema.optional()
28971
+ }).strict().optional()
28972
+ };
28973
+ var harnessPluginManifestSchema = external_exports.object({
28974
+ manifestVersion: external_exports.literal(1),
28975
+ ...pluginPresentationShape,
28976
+ adapterApiVersion: external_exports.number().int().positive(),
28977
+ entry: relativeResourceSchema,
28978
+ icon: relativeResourceSchema.optional()
28979
+ }).strict();
28980
+ 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);
28981
+ var harnessPluginDescriptorSchema = external_exports.object({
28982
+ ...pluginPresentationShape,
28983
+ icon: harnessPluginIconSchema.optional()
28984
+ }).strict();
28985
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
28986
+ var harnessPluginListResultSchema = external_exports.object({
28987
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
28988
+ }).strict();
28989
+ var harnessPluginConfigurationSchema = external_exports.object({
28990
+ version: external_exports.literal(1),
28991
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
28992
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
28993
+ message: "Enabled plugin IDs must be unique",
28994
+ path: ["enabled"]
28995
+ });
28996
+
28989
28997
  // ../../shared-contracts/dist/harness-route.js
28990
28998
  var harnessPluginRouteSchema = external_exports.object({
28991
28999
  harnessId: harnessPluginIdSchema,
@@ -29179,6 +29187,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
29179
29187
  }).strict();
29180
29188
  var harnessCommandCatalogSchema = external_exports.object({
29181
29189
  commands: external_exports.array(harnessCommandDescriptorSchema),
29190
+ /** Partial discovery failures; valid commands remain available. */
29191
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
29182
29192
  /**
29183
29193
  * `live` when the catalog includes what a native Session reports for its
29184
29194
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -29214,7 +29224,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
29214
29224
  }).strict();
29215
29225
  var threadCommandExecuteResultSchema = external_exports.object({
29216
29226
  accepted: external_exports.literal(true),
29217
- turnId: hostTurnIdSchema
29227
+ turnId: hostTurnIdSchema.optional()
29218
29228
  }).strict();
29219
29229
 
29220
29230
  // ../../shared-contracts/dist/json-rpc.js