@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
@@ -15216,7 +15216,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15216
15216
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15217
15217
  message: "Value must not be empty or whitespace"
15218
15218
  });
15219
- 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();
15219
+ 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();
15220
15220
  var harnessPermissionModeSchema = external_exports.object({
15221
15221
  id: harnessPermissionModeIdSchema,
15222
15222
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15600,7 +15600,12 @@ var threadInspectionParamsSchema = external_exports.object({
15600
15600
  }).strict();
15601
15601
  var codexThreadInspectionSchema = external_exports.object({
15602
15602
  owner: external_exports.literal("codex"),
15603
- locked: external_exports.literal(true),
15603
+ locked: external_exports.boolean(),
15604
+ effectiveModel: harnessModelRefSchema.optional(),
15605
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15606
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15607
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15608
+ history: harnessHistoryCapabilitiesSchema.optional(),
15604
15609
  supportsThreadReferences: external_exports.literal(true).optional()
15605
15610
  }).strict();
15606
15611
  var externalThreadInspectionSchema = external_exports.object({
@@ -15822,7 +15827,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15822
15827
  thread: external_exports.object({
15823
15828
  id: external_exports.string().min(1),
15824
15829
  cwd: external_exports.string(),
15825
- modelProvider: external_exports.literal("codexhost"),
15830
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15831
+ modelProvider: external_exports.string().min(1),
15826
15832
  createdAt: external_exports.number(),
15827
15833
  updatedAt: external_exports.number(),
15828
15834
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15836,6 +15842,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15836
15842
  nextCursor: external_exports.string().nullable()
15837
15843
  }),
15838
15844
  configuration: external_exports.object({
15845
+ /** Native Codex model names are not external Harness transport refs. */
15846
+ native: external_exports.object({
15847
+ model: external_exports.string().min(1).max(1024).optional(),
15848
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15849
+ }).optional(),
15839
15850
  effectiveModel: harnessModelRefSchema.optional(),
15840
15851
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15841
15852
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15862,6 +15873,16 @@ var clientChannelResponseSchema = external_exports.object({
15862
15873
  result: record2
15863
15874
  });
15864
15875
 
15876
+ // ../../shared-contracts/dist/thread-catalog.js
15877
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15878
+ var threadCatalogReadResultSchema = external_exports.object({
15879
+ threads: external_exports.array(jsonObjectSchema),
15880
+ ownership: external_exports.array(threadOwnershipSchema),
15881
+ /** Known archived IDs, including visible local external records even when their rows are
15882
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15883
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15884
+ }).strict();
15885
+
15865
15886
  // ../../shared-contracts/dist/voice.js
15866
15887
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15867
15888
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16077,93 +16098,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16077
16098
  timeoutMinutes: 30
16078
16099
  });
16079
16100
 
16080
- // ../../shared-contracts/dist/harness-plugins.js
16081
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16082
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16083
- var HARNESS_PLUGIN_LIMIT = 128;
16084
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16085
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16086
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16087
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16088
- 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");
16089
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16090
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16091
- var harnessInstallationGuideSchema = external_exports.object({
16092
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16093
- before: localizedTextSchema.optional(),
16094
- after: localizedTextSchema.optional(),
16095
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16096
- }).strict();
16097
- var pluginPresentationShape = {
16098
- id: installedHarnessPluginIdSchema,
16099
- name: external_exports.string().trim().min(1).max(128),
16100
- version: external_exports.string().min(1).max(128),
16101
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16102
- kind: external_exports.literal("usage").optional(),
16103
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16104
- iconStyle: external_exports.object({
16105
- vector: external_exports.object({
16106
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16107
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16108
- paths: external_exports.array(external_exports.object({
16109
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16110
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16111
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16112
- }).strict()).min(1).max(32)
16113
- }).strict().optional(),
16114
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16115
- borderRadius: external_exports.number().min(0).max(50).optional(),
16116
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16117
- }).strict().optional(),
16118
- installation: harnessInstallationGuideSchema.optional(),
16119
- notice: localizedTextSchema.optional(),
16120
- /** The factory accepts a persisted local entrypoint through its construction context. */
16121
- launchCommand: external_exports.literal(true).optional(),
16122
- links: external_exports.object({
16123
- website: documentationUrlSchema.optional(),
16124
- documentation: documentationUrlSchema.optional(),
16125
- installation: documentationUrlSchema.optional()
16126
- }).strict().optional()
16127
- };
16128
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16129
- message: "Plugin surfaces must be unique"
16130
- });
16131
- var harnessPluginManifestSchema = external_exports.object({
16132
- manifestVersion: external_exports.literal(1),
16133
- ...pluginPresentationShape,
16134
- adapterApiVersion: external_exports.number().int().positive(),
16135
- entry: relativeResourceSchema,
16136
- icon: relativeResourceSchema.optional(),
16137
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16138
- surfaces: harnessPluginSurfacesSchema.optional()
16139
- }).strict();
16140
- 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);
16141
- var harnessPluginDescriptorSchema = external_exports.object({
16142
- ...pluginPresentationShape,
16143
- icon: harnessPluginIconSchema.optional()
16144
- }).strict();
16145
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16146
- var harnessPluginListResultSchema = external_exports.object({
16147
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16148
- }).strict();
16149
- var harnessPluginConfigurationSchema = external_exports.object({
16150
- version: external_exports.literal(1),
16151
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16152
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16153
- message: "Enabled plugin IDs must be unique",
16154
- path: ["enabled"]
16155
- });
16156
-
16157
16101
  // ../../shared-contracts/dist/harness-preferences.js
16158
16102
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16159
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16103
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16160
16104
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16161
16105
  model: harnessModelRefSchema.optional(),
16162
16106
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16163
16107
  permissionModeId: harnessPermissionModeIdSchema.optional()
16164
16108
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16165
16109
  var newThreadDefaultsSchema = external_exports.strictObject({
16166
- lastHarness: installedHarnessPluginIdSchema.optional(),
16110
+ lastHarness: harnessIdSchema.optional(),
16167
16111
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16168
16112
  });
16169
16113
  var modelId = external_exports.string().min(1).max(1024);
@@ -16184,19 +16128,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16184
16128
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16185
16129
  external_exports.strictObject({
16186
16130
  kind: external_exports.literal("favorite"),
16187
- harnessId: installedHarnessPluginIdSchema,
16131
+ harnessId: harnessIdSchema,
16188
16132
  modelId,
16189
16133
  enabled: external_exports.boolean()
16190
16134
  }),
16191
16135
  external_exports.strictObject({
16192
16136
  kind: external_exports.literal("favorites"),
16193
- harnessId: installedHarnessPluginIdSchema,
16137
+ harnessId: harnessIdSchema,
16194
16138
  modelIds: external_exports.array(modelId).max(2048)
16195
16139
  }),
16196
16140
  external_exports.strictObject({
16197
16141
  kind: external_exports.literal("newThread"),
16198
- lastHarness: installedHarnessPluginIdSchema.optional(),
16199
- harnessId: installedHarnessPluginIdSchema.optional(),
16142
+ lastHarness: harnessIdSchema.optional(),
16143
+ harnessId: harnessIdSchema.optional(),
16200
16144
  configuration: harnessDefaultConfigurationSchema.optional()
16201
16145
  })
16202
16146
  ]);
@@ -16212,12 +16156,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16212
16156
  code: "custom",
16213
16157
  message: "A default Harness or complete configuration is required"
16214
16158
  });
16215
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16216
- if (harnessId === "codex")
16217
- ctx.addIssue({
16218
- code: "custom",
16219
- message: "Official Codex is not an external Harness"
16220
- });
16221
16159
  }
16222
16160
  });
16223
16161
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16594,6 +16532,76 @@ var harnessAccountListResultSchema = external_exports.object({
16594
16532
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16595
16533
  }).strict();
16596
16534
 
16535
+ // ../../shared-contracts/dist/harness-plugins.js
16536
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16537
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16538
+ var HARNESS_PLUGIN_LIMIT = 128;
16539
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16540
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16541
+ 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");
16542
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16543
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16544
+ var harnessInstallationGuideSchema = external_exports.object({
16545
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16546
+ before: localizedTextSchema.optional(),
16547
+ after: localizedTextSchema.optional(),
16548
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16549
+ }).strict();
16550
+ var pluginPresentationShape = {
16551
+ id: installedHarnessPluginIdSchema,
16552
+ name: external_exports.string().trim().min(1).max(128),
16553
+ version: external_exports.string().min(1).max(128),
16554
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16555
+ kind: external_exports.literal("usage").optional(),
16556
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16557
+ iconStyle: external_exports.object({
16558
+ vector: external_exports.object({
16559
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16560
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16561
+ paths: external_exports.array(external_exports.object({
16562
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16563
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16564
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16565
+ }).strict()).min(1).max(32)
16566
+ }).strict().optional(),
16567
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16568
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16569
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16570
+ }).strict().optional(),
16571
+ installation: harnessInstallationGuideSchema.optional(),
16572
+ notice: localizedTextSchema.optional(),
16573
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16574
+ launchCommand: external_exports.literal(true).optional(),
16575
+ links: external_exports.object({
16576
+ website: documentationUrlSchema.optional(),
16577
+ documentation: documentationUrlSchema.optional(),
16578
+ installation: documentationUrlSchema.optional()
16579
+ }).strict().optional()
16580
+ };
16581
+ var harnessPluginManifestSchema = external_exports.object({
16582
+ manifestVersion: external_exports.literal(1),
16583
+ ...pluginPresentationShape,
16584
+ adapterApiVersion: external_exports.number().int().positive(),
16585
+ entry: relativeResourceSchema,
16586
+ icon: relativeResourceSchema.optional()
16587
+ }).strict();
16588
+ 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);
16589
+ var harnessPluginDescriptorSchema = external_exports.object({
16590
+ ...pluginPresentationShape,
16591
+ icon: harnessPluginIconSchema.optional()
16592
+ }).strict();
16593
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16594
+ var harnessPluginListResultSchema = external_exports.object({
16595
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16596
+ }).strict();
16597
+ var harnessPluginConfigurationSchema = external_exports.object({
16598
+ version: external_exports.literal(1),
16599
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16600
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16601
+ message: "Enabled plugin IDs must be unique",
16602
+ path: ["enabled"]
16603
+ });
16604
+
16597
16605
  // ../../shared-contracts/dist/harness-route.js
16598
16606
  var harnessPluginRouteSchema = external_exports.object({
16599
16607
  harnessId: harnessPluginIdSchema,
@@ -16787,6 +16795,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16787
16795
  }).strict();
16788
16796
  var harnessCommandCatalogSchema = external_exports.object({
16789
16797
  commands: external_exports.array(harnessCommandDescriptorSchema),
16798
+ /** Partial discovery failures; valid commands remain available. */
16799
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16790
16800
  /**
16791
16801
  * `live` when the catalog includes what a native Session reports for its
16792
16802
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16822,7 +16832,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16822
16832
  }).strict();
16823
16833
  var threadCommandExecuteResultSchema = external_exports.object({
16824
16834
  accepted: external_exports.literal(true),
16825
- turnId: hostTurnIdSchema
16835
+ turnId: hostTurnIdSchema.optional()
16826
16836
  }).strict();
16827
16837
 
16828
16838
  // ../../shared-contracts/dist/json-rpc.js
@@ -14983,7 +14983,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14983
14983
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14984
14984
  message: "Value must not be empty or whitespace"
14985
14985
  });
14986
- var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14986
+ var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
14987
14987
  var harnessPermissionModeSchema = external_exports.object({
14988
14988
  id: harnessPermissionModeIdSchema,
14989
14989
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15367,7 +15367,12 @@ var threadInspectionParamsSchema = external_exports.object({
15367
15367
  }).strict();
15368
15368
  var codexThreadInspectionSchema = external_exports.object({
15369
15369
  owner: external_exports.literal("codex"),
15370
- locked: external_exports.literal(true),
15370
+ locked: external_exports.boolean(),
15371
+ effectiveModel: harnessModelRefSchema.optional(),
15372
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15373
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15374
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15375
+ history: harnessHistoryCapabilitiesSchema.optional(),
15371
15376
  supportsThreadReferences: external_exports.literal(true).optional()
15372
15377
  }).strict();
15373
15378
  var externalThreadInspectionSchema = external_exports.object({
@@ -15589,7 +15594,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15589
15594
  thread: external_exports.object({
15590
15595
  id: external_exports.string().min(1),
15591
15596
  cwd: external_exports.string(),
15592
- modelProvider: external_exports.literal("codexhost"),
15597
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15598
+ modelProvider: external_exports.string().min(1),
15593
15599
  createdAt: external_exports.number(),
15594
15600
  updatedAt: external_exports.number(),
15595
15601
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15603,6 +15609,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15603
15609
  nextCursor: external_exports.string().nullable()
15604
15610
  }),
15605
15611
  configuration: external_exports.object({
15612
+ /** Native Codex model names are not external Harness transport refs. */
15613
+ native: external_exports.object({
15614
+ model: external_exports.string().min(1).max(1024).optional(),
15615
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15616
+ }).optional(),
15606
15617
  effectiveModel: harnessModelRefSchema.optional(),
15607
15618
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15608
15619
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15629,6 +15640,16 @@ var clientChannelResponseSchema = external_exports.object({
15629
15640
  result: record2
15630
15641
  });
15631
15642
 
15643
+ // ../../shared-contracts/dist/thread-catalog.js
15644
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15645
+ var threadCatalogReadResultSchema = external_exports.object({
15646
+ threads: external_exports.array(jsonObjectSchema),
15647
+ ownership: external_exports.array(threadOwnershipSchema),
15648
+ /** Known archived IDs, including visible local external records even when their rows are
15649
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15650
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15651
+ }).strict();
15652
+
15632
15653
  // ../../shared-contracts/dist/voice.js
15633
15654
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15634
15655
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15844,93 +15865,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15844
15865
  timeoutMinutes: 30
15845
15866
  });
15846
15867
 
15847
- // ../../shared-contracts/dist/harness-plugins.js
15848
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15849
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15850
- var HARNESS_PLUGIN_LIMIT = 128;
15851
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15852
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15853
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15854
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15855
- var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
15856
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15857
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15858
- var harnessInstallationGuideSchema = external_exports.object({
15859
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15860
- before: localizedTextSchema.optional(),
15861
- after: localizedTextSchema.optional(),
15862
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15863
- }).strict();
15864
- var pluginPresentationShape = {
15865
- id: installedHarnessPluginIdSchema,
15866
- name: external_exports.string().trim().min(1).max(128),
15867
- version: external_exports.string().min(1).max(128),
15868
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15869
- kind: external_exports.literal("usage").optional(),
15870
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15871
- iconStyle: external_exports.object({
15872
- vector: external_exports.object({
15873
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15874
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15875
- paths: external_exports.array(external_exports.object({
15876
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15877
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15878
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15879
- }).strict()).min(1).max(32)
15880
- }).strict().optional(),
15881
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15882
- borderRadius: external_exports.number().min(0).max(50).optional(),
15883
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15884
- }).strict().optional(),
15885
- installation: harnessInstallationGuideSchema.optional(),
15886
- notice: localizedTextSchema.optional(),
15887
- /** The factory accepts a persisted local entrypoint through its construction context. */
15888
- launchCommand: external_exports.literal(true).optional(),
15889
- links: external_exports.object({
15890
- website: documentationUrlSchema.optional(),
15891
- documentation: documentationUrlSchema.optional(),
15892
- installation: documentationUrlSchema.optional()
15893
- }).strict().optional()
15894
- };
15895
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15896
- message: "Plugin surfaces must be unique"
15897
- });
15898
- var harnessPluginManifestSchema = external_exports.object({
15899
- manifestVersion: external_exports.literal(1),
15900
- ...pluginPresentationShape,
15901
- adapterApiVersion: external_exports.number().int().positive(),
15902
- entry: relativeResourceSchema,
15903
- icon: relativeResourceSchema.optional(),
15904
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15905
- surfaces: harnessPluginSurfacesSchema.optional()
15906
- }).strict();
15907
- var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
15908
- var harnessPluginDescriptorSchema = external_exports.object({
15909
- ...pluginPresentationShape,
15910
- icon: harnessPluginIconSchema.optional()
15911
- }).strict();
15912
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15913
- var harnessPluginListResultSchema = external_exports.object({
15914
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15915
- }).strict();
15916
- var harnessPluginConfigurationSchema = external_exports.object({
15917
- version: external_exports.literal(1),
15918
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15919
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15920
- message: "Enabled plugin IDs must be unique",
15921
- path: ["enabled"]
15922
- });
15923
-
15924
15868
  // ../../shared-contracts/dist/harness-preferences.js
15925
15869
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15926
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15870
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15927
15871
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15928
15872
  model: harnessModelRefSchema.optional(),
15929
15873
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15930
15874
  permissionModeId: harnessPermissionModeIdSchema.optional()
15931
15875
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15932
15876
  var newThreadDefaultsSchema = external_exports.strictObject({
15933
- lastHarness: installedHarnessPluginIdSchema.optional(),
15877
+ lastHarness: harnessIdSchema.optional(),
15934
15878
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15935
15879
  });
15936
15880
  var modelId = external_exports.string().min(1).max(1024);
@@ -15951,19 +15895,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15951
15895
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15952
15896
  external_exports.strictObject({
15953
15897
  kind: external_exports.literal("favorite"),
15954
- harnessId: installedHarnessPluginIdSchema,
15898
+ harnessId: harnessIdSchema,
15955
15899
  modelId,
15956
15900
  enabled: external_exports.boolean()
15957
15901
  }),
15958
15902
  external_exports.strictObject({
15959
15903
  kind: external_exports.literal("favorites"),
15960
- harnessId: installedHarnessPluginIdSchema,
15904
+ harnessId: harnessIdSchema,
15961
15905
  modelIds: external_exports.array(modelId).max(2048)
15962
15906
  }),
15963
15907
  external_exports.strictObject({
15964
15908
  kind: external_exports.literal("newThread"),
15965
- lastHarness: installedHarnessPluginIdSchema.optional(),
15966
- harnessId: installedHarnessPluginIdSchema.optional(),
15909
+ lastHarness: harnessIdSchema.optional(),
15910
+ harnessId: harnessIdSchema.optional(),
15967
15911
  configuration: harnessDefaultConfigurationSchema.optional()
15968
15912
  })
15969
15913
  ]);
@@ -15979,12 +15923,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15979
15923
  code: "custom",
15980
15924
  message: "A default Harness or complete configuration is required"
15981
15925
  });
15982
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15983
- if (harnessId === "codex")
15984
- ctx.addIssue({
15985
- code: "custom",
15986
- message: "Official Codex is not an external Harness"
15987
- });
15988
15926
  }
15989
15927
  });
15990
15928
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16361,6 +16299,76 @@ var harnessAccountListResultSchema = external_exports.object({
16361
16299
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16362
16300
  }).strict();
16363
16301
 
16302
+ // ../../shared-contracts/dist/harness-plugins.js
16303
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16304
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16305
+ var HARNESS_PLUGIN_LIMIT = 128;
16306
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16307
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16308
+ 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");
16309
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16310
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16311
+ var harnessInstallationGuideSchema = external_exports.object({
16312
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16313
+ before: localizedTextSchema.optional(),
16314
+ after: localizedTextSchema.optional(),
16315
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16316
+ }).strict();
16317
+ var pluginPresentationShape = {
16318
+ id: installedHarnessPluginIdSchema,
16319
+ name: external_exports.string().trim().min(1).max(128),
16320
+ version: external_exports.string().min(1).max(128),
16321
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16322
+ kind: external_exports.literal("usage").optional(),
16323
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16324
+ iconStyle: external_exports.object({
16325
+ vector: external_exports.object({
16326
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16327
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16328
+ paths: external_exports.array(external_exports.object({
16329
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16330
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16331
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16332
+ }).strict()).min(1).max(32)
16333
+ }).strict().optional(),
16334
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16335
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16336
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16337
+ }).strict().optional(),
16338
+ installation: harnessInstallationGuideSchema.optional(),
16339
+ notice: localizedTextSchema.optional(),
16340
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16341
+ launchCommand: external_exports.literal(true).optional(),
16342
+ links: external_exports.object({
16343
+ website: documentationUrlSchema.optional(),
16344
+ documentation: documentationUrlSchema.optional(),
16345
+ installation: documentationUrlSchema.optional()
16346
+ }).strict().optional()
16347
+ };
16348
+ var harnessPluginManifestSchema = external_exports.object({
16349
+ manifestVersion: external_exports.literal(1),
16350
+ ...pluginPresentationShape,
16351
+ adapterApiVersion: external_exports.number().int().positive(),
16352
+ entry: relativeResourceSchema,
16353
+ icon: relativeResourceSchema.optional()
16354
+ }).strict();
16355
+ 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);
16356
+ var harnessPluginDescriptorSchema = external_exports.object({
16357
+ ...pluginPresentationShape,
16358
+ icon: harnessPluginIconSchema.optional()
16359
+ }).strict();
16360
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16361
+ var harnessPluginListResultSchema = external_exports.object({
16362
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16363
+ }).strict();
16364
+ var harnessPluginConfigurationSchema = external_exports.object({
16365
+ version: external_exports.literal(1),
16366
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16367
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16368
+ message: "Enabled plugin IDs must be unique",
16369
+ path: ["enabled"]
16370
+ });
16371
+
16364
16372
  // ../../shared-contracts/dist/harness-route.js
16365
16373
  var harnessPluginRouteSchema = external_exports.object({
16366
16374
  harnessId: harnessPluginIdSchema,
@@ -16554,6 +16562,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16554
16562
  }).strict();
16555
16563
  var harnessCommandCatalogSchema = external_exports.object({
16556
16564
  commands: external_exports.array(harnessCommandDescriptorSchema),
16565
+ /** Partial discovery failures; valid commands remain available. */
16566
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16557
16567
  /**
16558
16568
  * `live` when the catalog includes what a native Session reports for its
16559
16569
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16589,7 +16599,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16589
16599
  }).strict();
16590
16600
  var threadCommandExecuteResultSchema = external_exports.object({
16591
16601
  accepted: external_exports.literal(true),
16592
- turnId: hostTurnIdSchema
16602
+ turnId: hostTurnIdSchema.optional()
16593
16603
  }).strict();
16594
16604
 
16595
16605
  // ../../shared-contracts/dist/json-rpc.js