@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
@@ -14924,7 +14924,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14924
14924
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14925
14925
  message: "Value must not be empty or whitespace"
14926
14926
  });
14927
- 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();
14927
+ 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();
14928
14928
  var harnessPermissionModeSchema = external_exports.object({
14929
14929
  id: harnessPermissionModeIdSchema,
14930
14930
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15308,7 +15308,12 @@ var threadInspectionParamsSchema = external_exports.object({
15308
15308
  }).strict();
15309
15309
  var codexThreadInspectionSchema = external_exports.object({
15310
15310
  owner: external_exports.literal("codex"),
15311
- locked: external_exports.literal(true),
15311
+ locked: external_exports.boolean(),
15312
+ effectiveModel: harnessModelRefSchema.optional(),
15313
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15314
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15315
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15316
+ history: harnessHistoryCapabilitiesSchema.optional(),
15312
15317
  supportsThreadReferences: external_exports.literal(true).optional()
15313
15318
  }).strict();
15314
15319
  var externalThreadInspectionSchema = external_exports.object({
@@ -15530,7 +15535,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15530
15535
  thread: external_exports.object({
15531
15536
  id: external_exports.string().min(1),
15532
15537
  cwd: external_exports.string(),
15533
- modelProvider: external_exports.literal("codexhost"),
15538
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15539
+ modelProvider: external_exports.string().min(1),
15534
15540
  createdAt: external_exports.number(),
15535
15541
  updatedAt: external_exports.number(),
15536
15542
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15544,6 +15550,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15544
15550
  nextCursor: external_exports.string().nullable()
15545
15551
  }),
15546
15552
  configuration: external_exports.object({
15553
+ /** Native Codex model names are not external Harness transport refs. */
15554
+ native: external_exports.object({
15555
+ model: external_exports.string().min(1).max(1024).optional(),
15556
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15557
+ }).optional(),
15547
15558
  effectiveModel: harnessModelRefSchema.optional(),
15548
15559
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15549
15560
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15570,6 +15581,16 @@ var clientChannelResponseSchema = external_exports.object({
15570
15581
  result: record2
15571
15582
  });
15572
15583
 
15584
+ // packages/shared-contracts/dist/thread-catalog.js
15585
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15586
+ var threadCatalogReadResultSchema = external_exports.object({
15587
+ threads: external_exports.array(jsonObjectSchema),
15588
+ ownership: external_exports.array(threadOwnershipSchema),
15589
+ /** Known archived IDs, including visible local external records even when their rows are
15590
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15591
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15592
+ }).strict();
15593
+
15573
15594
  // packages/shared-contracts/dist/voice.js
15574
15595
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15575
15596
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15786,93 +15807,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15786
15807
  timeoutMinutes: 30
15787
15808
  });
15788
15809
 
15789
- // packages/shared-contracts/dist/harness-plugins.js
15790
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15791
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15792
- var HARNESS_PLUGIN_LIMIT = 128;
15793
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15794
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15795
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15796
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15797
- 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");
15798
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15799
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15800
- var harnessInstallationGuideSchema = external_exports.object({
15801
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15802
- before: localizedTextSchema.optional(),
15803
- after: localizedTextSchema.optional(),
15804
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15805
- }).strict();
15806
- var pluginPresentationShape = {
15807
- id: installedHarnessPluginIdSchema,
15808
- name: external_exports.string().trim().min(1).max(128),
15809
- version: external_exports.string().min(1).max(128),
15810
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15811
- kind: external_exports.literal("usage").optional(),
15812
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15813
- iconStyle: external_exports.object({
15814
- vector: external_exports.object({
15815
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15816
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15817
- paths: external_exports.array(external_exports.object({
15818
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15819
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15820
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15821
- }).strict()).min(1).max(32)
15822
- }).strict().optional(),
15823
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15824
- borderRadius: external_exports.number().min(0).max(50).optional(),
15825
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15826
- }).strict().optional(),
15827
- installation: harnessInstallationGuideSchema.optional(),
15828
- notice: localizedTextSchema.optional(),
15829
- /** The factory accepts a persisted local entrypoint through its construction context. */
15830
- launchCommand: external_exports.literal(true).optional(),
15831
- links: external_exports.object({
15832
- website: documentationUrlSchema.optional(),
15833
- documentation: documentationUrlSchema.optional(),
15834
- installation: documentationUrlSchema.optional()
15835
- }).strict().optional()
15836
- };
15837
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15838
- message: "Plugin surfaces must be unique"
15839
- });
15840
- var harnessPluginManifestSchema = external_exports.object({
15841
- manifestVersion: external_exports.literal(1),
15842
- ...pluginPresentationShape,
15843
- adapterApiVersion: external_exports.number().int().positive(),
15844
- entry: relativeResourceSchema,
15845
- icon: relativeResourceSchema.optional(),
15846
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15847
- surfaces: harnessPluginSurfacesSchema.optional()
15848
- }).strict();
15849
- 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);
15850
- var harnessPluginDescriptorSchema = external_exports.object({
15851
- ...pluginPresentationShape,
15852
- icon: harnessPluginIconSchema.optional()
15853
- }).strict();
15854
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15855
- var harnessPluginListResultSchema = external_exports.object({
15856
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15857
- }).strict();
15858
- var harnessPluginConfigurationSchema = external_exports.object({
15859
- version: external_exports.literal(1),
15860
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15861
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15862
- message: "Enabled plugin IDs must be unique",
15863
- path: ["enabled"]
15864
- });
15865
-
15866
15810
  // packages/shared-contracts/dist/harness-preferences.js
15867
15811
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15868
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15812
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15869
15813
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15870
15814
  model: harnessModelRefSchema.optional(),
15871
15815
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15872
15816
  permissionModeId: harnessPermissionModeIdSchema.optional()
15873
15817
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15874
15818
  var newThreadDefaultsSchema = external_exports.strictObject({
15875
- lastHarness: installedHarnessPluginIdSchema.optional(),
15819
+ lastHarness: harnessIdSchema.optional(),
15876
15820
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15877
15821
  });
15878
15822
  var modelId = external_exports.string().min(1).max(1024);
@@ -15893,19 +15837,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15893
15837
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15894
15838
  external_exports.strictObject({
15895
15839
  kind: external_exports.literal("favorite"),
15896
- harnessId: installedHarnessPluginIdSchema,
15840
+ harnessId: harnessIdSchema,
15897
15841
  modelId,
15898
15842
  enabled: external_exports.boolean()
15899
15843
  }),
15900
15844
  external_exports.strictObject({
15901
15845
  kind: external_exports.literal("favorites"),
15902
- harnessId: installedHarnessPluginIdSchema,
15846
+ harnessId: harnessIdSchema,
15903
15847
  modelIds: external_exports.array(modelId).max(2048)
15904
15848
  }),
15905
15849
  external_exports.strictObject({
15906
15850
  kind: external_exports.literal("newThread"),
15907
- lastHarness: installedHarnessPluginIdSchema.optional(),
15908
- harnessId: installedHarnessPluginIdSchema.optional(),
15851
+ lastHarness: harnessIdSchema.optional(),
15852
+ harnessId: harnessIdSchema.optional(),
15909
15853
  configuration: harnessDefaultConfigurationSchema.optional()
15910
15854
  })
15911
15855
  ]);
@@ -15921,12 +15865,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15921
15865
  code: "custom",
15922
15866
  message: "A default Harness or complete configuration is required"
15923
15867
  });
15924
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15925
- if (harnessId === "codex")
15926
- ctx.addIssue({
15927
- code: "custom",
15928
- message: "Official Codex is not an external Harness"
15929
- });
15930
15868
  }
15931
15869
  });
15932
15870
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16303,6 +16241,76 @@ var harnessAccountListResultSchema = external_exports.object({
16303
16241
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16304
16242
  }).strict();
16305
16243
 
16244
+ // packages/shared-contracts/dist/harness-plugins.js
16245
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16246
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16247
+ var HARNESS_PLUGIN_LIMIT = 128;
16248
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16249
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16250
+ 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");
16251
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16252
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16253
+ var harnessInstallationGuideSchema = external_exports.object({
16254
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16255
+ before: localizedTextSchema.optional(),
16256
+ after: localizedTextSchema.optional(),
16257
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16258
+ }).strict();
16259
+ var pluginPresentationShape = {
16260
+ id: installedHarnessPluginIdSchema,
16261
+ name: external_exports.string().trim().min(1).max(128),
16262
+ version: external_exports.string().min(1).max(128),
16263
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16264
+ kind: external_exports.literal("usage").optional(),
16265
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16266
+ iconStyle: external_exports.object({
16267
+ vector: external_exports.object({
16268
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16269
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16270
+ paths: external_exports.array(external_exports.object({
16271
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16272
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16273
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16274
+ }).strict()).min(1).max(32)
16275
+ }).strict().optional(),
16276
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16277
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16278
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16279
+ }).strict().optional(),
16280
+ installation: harnessInstallationGuideSchema.optional(),
16281
+ notice: localizedTextSchema.optional(),
16282
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16283
+ launchCommand: external_exports.literal(true).optional(),
16284
+ links: external_exports.object({
16285
+ website: documentationUrlSchema.optional(),
16286
+ documentation: documentationUrlSchema.optional(),
16287
+ installation: documentationUrlSchema.optional()
16288
+ }).strict().optional()
16289
+ };
16290
+ var harnessPluginManifestSchema = external_exports.object({
16291
+ manifestVersion: external_exports.literal(1),
16292
+ ...pluginPresentationShape,
16293
+ adapterApiVersion: external_exports.number().int().positive(),
16294
+ entry: relativeResourceSchema,
16295
+ icon: relativeResourceSchema.optional()
16296
+ }).strict();
16297
+ 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);
16298
+ var harnessPluginDescriptorSchema = external_exports.object({
16299
+ ...pluginPresentationShape,
16300
+ icon: harnessPluginIconSchema.optional()
16301
+ }).strict();
16302
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16303
+ var harnessPluginListResultSchema = external_exports.object({
16304
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16305
+ }).strict();
16306
+ var harnessPluginConfigurationSchema = external_exports.object({
16307
+ version: external_exports.literal(1),
16308
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16309
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16310
+ message: "Enabled plugin IDs must be unique",
16311
+ path: ["enabled"]
16312
+ });
16313
+
16306
16314
  // packages/shared-contracts/dist/harness-route.js
16307
16315
  var harnessPluginRouteSchema = external_exports.object({
16308
16316
  harnessId: harnessPluginIdSchema,
@@ -16496,6 +16504,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16496
16504
  }).strict();
16497
16505
  var harnessCommandCatalogSchema = external_exports.object({
16498
16506
  commands: external_exports.array(harnessCommandDescriptorSchema),
16507
+ /** Partial discovery failures; valid commands remain available. */
16508
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16499
16509
  /**
16500
16510
  * `live` when the catalog includes what a native Session reports for its
16501
16511
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16531,7 +16541,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16531
16541
  }).strict();
16532
16542
  var threadCommandExecuteResultSchema = external_exports.object({
16533
16543
  accepted: external_exports.literal(true),
16534
- turnId: hostTurnIdSchema
16544
+ turnId: hostTurnIdSchema.optional()
16535
16545
  }).strict();
16536
16546
 
16537
16547
  // packages/shared-contracts/dist/json-rpc.js
@@ -16902,13 +16912,6 @@ async function startControllerAttachmentServer(options) {
16902
16912
  if (newline < 0) return;
16903
16913
  handled = true;
16904
16914
  const line = request.slice(0, newline).replace(/\r$/, "");
16905
- if (options.invalidateThreadCatalog && line === `CATALOG ${options.nonce}` && request.slice(newline + 1) === "") {
16906
- void Promise.resolve().then(() => options.invalidateThreadCatalog?.()).then(
16907
- () => respond(socket, "ready"),
16908
- () => respond(socket, "failed")
16909
- );
16910
- return;
16911
- }
16912
16915
  const remotePrefix = `REMOTE ${options.nonce} `;
16913
16916
  if (options.remoteConnections && line.startsWith(remotePrefix)) {
16914
16917
  let input;
@@ -20163,15 +20166,6 @@ ${rendererSource}`,
20163
20166
  attachmentServer = await dependencies.startAttachmentServer({
20164
20167
  port: options.attachmentPort,
20165
20168
  nonce: options.attachmentNonce,
20166
- invalidateThreadCatalog: async () => {
20167
- if (signal.aborted) return;
20168
- try {
20169
- await session?.executeRenderer(
20170
- "window.__codexhostRendererBindingProbeV1?.invalidateThreadCatalog?.()"
20171
- );
20172
- } catch {
20173
- }
20174
- },
20175
20169
  remoteConnections: async (request) => {
20176
20170
  const current = await useSession(() => recoverSession());
20177
20171
  return remoteConnectionsReplySchema.parse(