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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +1 -1
  2. package/app/codexhost-distribution.json +1 -1
  3. package/app/console-server.mjs +109 -94
  4. package/app/console-web.js +110 -95
  5. package/app/desktop-controller.mjs +109 -110
  6. package/app/host-runtime.mjs +14225 -10527
  7. package/app/plugins/antigravity/plugin.mjs +109 -94
  8. package/app/plugins/claude-code/plugin.mjs +229 -148
  9. package/app/plugins/codebuddy/plugin.mjs +109 -94
  10. package/app/plugins/codex-usage/plugin.mjs +109 -94
  11. package/app/plugins/copilot/plugin.mjs +109 -94
  12. package/app/plugins/cursor-cli/plugin.mjs +109 -94
  13. package/app/plugins/deepseek-harness/plugin.mjs +109 -94
  14. package/app/plugins/devin/plugin.mjs +109 -94
  15. package/app/plugins/enabled.json +0 -1
  16. package/app/plugins/grok/plugin.mjs +109 -94
  17. package/app/plugins/hermes/plugin.mjs +109 -94
  18. package/app/plugins/kimi-code/plugin.mjs +109 -94
  19. package/app/plugins/kiro-cli/plugin.mjs +109 -94
  20. package/app/plugins/omp/plugin.mjs +109 -94
  21. package/app/plugins/opencode/plugin.mjs +109 -94
  22. package/app/plugins/pi/plugin.mjs +109 -94
  23. package/app/plugins/qoder/plugin.mjs +109 -94
  24. package/app/plugins/qoder-cn/plugin.mjs +109 -94
  25. package/app/plugins/qwen-code/plugin.mjs +109 -94
  26. package/app/plugins/workbuddy/plugin.mjs +109 -94
  27. package/app/plugins/zcode/plugin.mjs +109 -94
  28. package/app/renderer-extension.js +128 -150
  29. package/app/web/assets/index-C3lniEH1.css +1 -0
  30. package/app/web/assets/index-D1dOzBMI.js +199 -0
  31. package/app/web/codexhost-settings.js +110 -95
  32. package/app/web/index.html +2 -2
  33. package/app/web/plugins/deepseek-ai__dsh-api-gateway/client.js +1 -1
  34. package/app/web/plugins/deepseek-ai__dsh-api-remotes/client.js +64 -64
  35. package/app/web/plugins/deepseek-ai__dsh-api-session-controller/client.js +69 -69
  36. package/app/web/plugins/deepseek-ai__dsh-client-connection/client.js +1 -1
  37. package/app/web/plugins/deepseek-ai__dsh-client-ui-chat/client.js +2 -2
  38. package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +57 -56
  39. package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +87 -87
  40. package/app/web/plugins/deepseek-ai__dsh-client-ui-directory-picker-browse/client.js +10 -10
  41. package/app/web/plugins/deepseek-ai__dsh-client-ui-input-trigger/client.js +1 -1
  42. package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +3 -3
  43. package/app/web/plugins/deepseek-ai__dsh-client-ui-model-selection/client.js +2 -2
  44. package/app/web/plugins/deepseek-ai__dsh-client-ui-permission-presets/client.js +1 -1
  45. package/app/web/plugins/deepseek-ai__dsh-client-ui-settings/client.js +1 -1
  46. package/app/web/plugins/deepseek-ai__dsh-client-ui-settings-general/client.js +2 -2
  47. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +2 -2
  48. package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar-right/client.js +55 -55
  49. package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +18 -18
  50. package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -12
  51. package/app/web/plugins.json +4 -0
  52. package/app/web/sw.js +55 -24
  53. package/app/web-modules/server.mjs +1415 -784
  54. package/bin/codexhost +0 -0
  55. package/libexec/codexhost-shim +0 -0
  56. package/libexec/codexhost-updater +0 -0
  57. package/package.json +1 -1
  58. package/app/plugins/codex-cli/manifest.json +0 -16
  59. package/app/plugins/codex-cli/plugin.mjs +0 -20374
  60. package/app/web/assets/index-CIeTchMu.css +0 -1
  61. package/app/web/assets/index-DeAPBQbV.js +0 -199
  62. /package/app/{plugins/codex-cli/assets/icon.png → web/codex.png} +0 -0
package/README.md CHANGED
@@ -7,7 +7,7 @@ Run Pi and Claude Code as first-class external harnesses inside Codex Desktop.
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npm install -g @codexhost/cli@0.18.0-beta.1
10
+ npm install -g @codexhost/cli@0.18.0-beta.4
11
11
  ```
12
12
 
13
13
  Do not install this package directly. npm selects it through the optional dependencies of `@codexhost/cli`.
@@ -1 +1 @@
1
- {"schemaVersion":1,"version":"0.18.0-beta.1","distribution":"npm","target":"macos-arm64"}
1
+ {"schemaVersion":1,"version":"0.18.0-beta.4","distribution":"npm","target":"macos-arm64"}
@@ -15580,7 +15580,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15580
15580
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15581
15581
  message: "Value must not be empty or whitespace"
15582
15582
  });
15583
- 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();
15583
+ 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();
15584
15584
  var harnessPermissionModeSchema = external_exports.object({
15585
15585
  id: harnessPermissionModeIdSchema,
15586
15586
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15964,7 +15964,12 @@ var threadInspectionParamsSchema = external_exports.object({
15964
15964
  }).strict();
15965
15965
  var codexThreadInspectionSchema = external_exports.object({
15966
15966
  owner: external_exports.literal("codex"),
15967
- locked: external_exports.literal(true),
15967
+ locked: external_exports.boolean(),
15968
+ effectiveModel: harnessModelRefSchema.optional(),
15969
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15970
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15971
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15972
+ history: harnessHistoryCapabilitiesSchema.optional(),
15968
15973
  supportsThreadReferences: external_exports.literal(true).optional()
15969
15974
  }).strict();
15970
15975
  var externalThreadInspectionSchema = external_exports.object({
@@ -16186,7 +16191,8 @@ var clientThreadSnapshotSchema = external_exports.object({
16186
16191
  thread: external_exports.object({
16187
16192
  id: external_exports.string().min(1),
16188
16193
  cwd: external_exports.string(),
16189
- modelProvider: external_exports.literal("codexhost"),
16194
+ /** External rows use codexhost; native Codex rows retain their official provider. */
16195
+ modelProvider: external_exports.string().min(1),
16190
16196
  createdAt: external_exports.number(),
16191
16197
  updatedAt: external_exports.number(),
16192
16198
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -16200,6 +16206,11 @@ var clientThreadSnapshotSchema = external_exports.object({
16200
16206
  nextCursor: external_exports.string().nullable()
16201
16207
  }),
16202
16208
  configuration: external_exports.object({
16209
+ /** Native Codex model names are not external Harness transport refs. */
16210
+ native: external_exports.object({
16211
+ model: external_exports.string().min(1).max(1024).optional(),
16212
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
16213
+ }).optional(),
16203
16214
  effectiveModel: harnessModelRefSchema.optional(),
16204
16215
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16205
16216
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -16226,6 +16237,21 @@ var clientChannelResponseSchema = external_exports.object({
16226
16237
  result: record3
16227
16238
  });
16228
16239
 
16240
+ // packages/shared-contracts/dist/thread-catalog.js
16241
+ var threadCatalogReadParamsSchema = external_exports.object({
16242
+ includeArchived: external_exports.boolean().optional(),
16243
+ /** Absent means first page; null means this branch is exhausted. Native cursors only. */
16244
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
16245
+ }).strict();
16246
+ var threadCatalogReadResultSchema = external_exports.object({
16247
+ threads: external_exports.array(jsonObjectSchema),
16248
+ ownership: external_exports.array(threadOwnershipSchema),
16249
+ /** Known archived IDs, including visible local external records even when their rows are
16250
+ * excluded. Native archived IDs describe only the returned page, never a complete set. */
16251
+ archivedThreadIds: external_exports.array(hostThreadIdSchema),
16252
+ officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
16253
+ }).strict();
16254
+
16229
16255
  // packages/shared-contracts/dist/voice.js
16230
16256
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
16231
16257
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -16438,96 +16464,19 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
16438
16464
  });
16439
16465
  var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
16440
16466
  enabled: false,
16441
- timeoutMinutes: 30
16442
- });
16443
-
16444
- // packages/shared-contracts/dist/harness-plugins.js
16445
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16446
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16447
- var HARNESS_PLUGIN_LIMIT = 128;
16448
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
16449
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
16450
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16451
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16452
- 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");
16453
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16454
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16455
- var harnessInstallationGuideSchema = external_exports.object({
16456
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16457
- before: localizedTextSchema.optional(),
16458
- after: localizedTextSchema.optional(),
16459
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16460
- }).strict();
16461
- var pluginPresentationShape = {
16462
- id: installedHarnessPluginIdSchema,
16463
- name: external_exports.string().trim().min(1).max(128),
16464
- version: external_exports.string().min(1).max(128),
16465
- /** Capability-only plugin; omitted for existing session-capable plugins. */
16466
- kind: external_exports.literal("usage").optional(),
16467
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16468
- iconStyle: external_exports.object({
16469
- vector: external_exports.object({
16470
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16471
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16472
- paths: external_exports.array(external_exports.object({
16473
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16474
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16475
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16476
- }).strict()).min(1).max(32)
16477
- }).strict().optional(),
16478
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16479
- borderRadius: external_exports.number().min(0).max(50).optional(),
16480
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16481
- }).strict().optional(),
16482
- installation: harnessInstallationGuideSchema.optional(),
16483
- notice: localizedTextSchema.optional(),
16484
- /** The factory accepts a persisted local entrypoint through its construction context. */
16485
- launchCommand: external_exports.literal(true).optional(),
16486
- links: external_exports.object({
16487
- website: documentationUrlSchema.optional(),
16488
- documentation: documentationUrlSchema.optional(),
16489
- installation: documentationUrlSchema.optional()
16490
- }).strict().optional()
16491
- };
16492
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16493
- message: "Plugin surfaces must be unique"
16494
- });
16495
- var harnessPluginManifestSchema = external_exports.object({
16496
- manifestVersion: external_exports.literal(1),
16497
- ...pluginPresentationShape,
16498
- adapterApiVersion: external_exports.number().int().positive(),
16499
- entry: relativeResourceSchema,
16500
- icon: relativeResourceSchema.optional(),
16501
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16502
- surfaces: harnessPluginSurfacesSchema.optional()
16503
- }).strict();
16504
- 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);
16505
- var harnessPluginDescriptorSchema = external_exports.object({
16506
- ...pluginPresentationShape,
16507
- icon: harnessPluginIconSchema.optional()
16508
- }).strict();
16509
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16510
- var harnessPluginListResultSchema = external_exports.object({
16511
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16512
- }).strict();
16513
- var harnessPluginConfigurationSchema = external_exports.object({
16514
- version: external_exports.literal(1),
16515
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16516
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16517
- message: "Enabled plugin IDs must be unique",
16518
- path: ["enabled"]
16467
+ timeoutMinutes: 10
16519
16468
  });
16520
16469
 
16521
16470
  // packages/shared-contracts/dist/harness-preferences.js
16522
16471
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16523
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
16472
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16524
16473
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16525
16474
  model: harnessModelRefSchema.optional(),
16526
16475
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16527
16476
  permissionModeId: harnessPermissionModeIdSchema.optional()
16528
16477
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16529
16478
  var newThreadDefaultsSchema = external_exports.strictObject({
16530
- lastHarness: installedHarnessPluginIdSchema.optional(),
16479
+ lastHarness: harnessIdSchema.optional(),
16531
16480
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16532
16481
  });
16533
16482
  var modelId = external_exports.string().min(1).max(1024);
@@ -16548,19 +16497,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16548
16497
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16549
16498
  external_exports.strictObject({
16550
16499
  kind: external_exports.literal("favorite"),
16551
- harnessId: installedHarnessPluginIdSchema,
16500
+ harnessId: harnessIdSchema,
16552
16501
  modelId,
16553
16502
  enabled: external_exports.boolean()
16554
16503
  }),
16555
16504
  external_exports.strictObject({
16556
16505
  kind: external_exports.literal("favorites"),
16557
- harnessId: installedHarnessPluginIdSchema,
16506
+ harnessId: harnessIdSchema,
16558
16507
  modelIds: external_exports.array(modelId).max(2048)
16559
16508
  }),
16560
16509
  external_exports.strictObject({
16561
16510
  kind: external_exports.literal("newThread"),
16562
- lastHarness: installedHarnessPluginIdSchema.optional(),
16563
- harnessId: installedHarnessPluginIdSchema.optional(),
16511
+ lastHarness: harnessIdSchema.optional(),
16512
+ harnessId: harnessIdSchema.optional(),
16564
16513
  configuration: harnessDefaultConfigurationSchema.optional()
16565
16514
  })
16566
16515
  ]);
@@ -16576,12 +16525,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16576
16525
  code: "custom",
16577
16526
  message: "A default Harness or complete configuration is required"
16578
16527
  });
16579
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16580
- if (harnessId === "codex")
16581
- ctx.addIssue({
16582
- code: "custom",
16583
- message: "Official Codex is not an external Harness"
16584
- });
16585
16528
  }
16586
16529
  });
16587
16530
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16961,6 +16904,76 @@ var harnessAccountListResultSchema = external_exports.object({
16961
16904
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16962
16905
  }).strict();
16963
16906
 
16907
+ // packages/shared-contracts/dist/harness-plugins.js
16908
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16909
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16910
+ var HARNESS_PLUGIN_LIMIT = 128;
16911
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16912
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16913
+ 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");
16914
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16915
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16916
+ var harnessInstallationGuideSchema = external_exports.object({
16917
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16918
+ before: localizedTextSchema.optional(),
16919
+ after: localizedTextSchema.optional(),
16920
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16921
+ }).strict();
16922
+ var pluginPresentationShape = {
16923
+ id: installedHarnessPluginIdSchema,
16924
+ name: external_exports.string().trim().min(1).max(128),
16925
+ version: external_exports.string().min(1).max(128),
16926
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16927
+ kind: external_exports.literal("usage").optional(),
16928
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16929
+ iconStyle: external_exports.object({
16930
+ vector: external_exports.object({
16931
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16932
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16933
+ paths: external_exports.array(external_exports.object({
16934
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16935
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16936
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16937
+ }).strict()).min(1).max(32)
16938
+ }).strict().optional(),
16939
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16940
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16941
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16942
+ }).strict().optional(),
16943
+ installation: harnessInstallationGuideSchema.optional(),
16944
+ notice: localizedTextSchema.optional(),
16945
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16946
+ launchCommand: external_exports.literal(true).optional(),
16947
+ links: external_exports.object({
16948
+ website: documentationUrlSchema.optional(),
16949
+ documentation: documentationUrlSchema.optional(),
16950
+ installation: documentationUrlSchema.optional()
16951
+ }).strict().optional()
16952
+ };
16953
+ var harnessPluginManifestSchema = external_exports.object({
16954
+ manifestVersion: external_exports.literal(1),
16955
+ ...pluginPresentationShape,
16956
+ adapterApiVersion: external_exports.number().int().positive(),
16957
+ entry: relativeResourceSchema,
16958
+ icon: relativeResourceSchema.optional()
16959
+ }).strict();
16960
+ 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);
16961
+ var harnessPluginDescriptorSchema = external_exports.object({
16962
+ ...pluginPresentationShape,
16963
+ icon: harnessPluginIconSchema.optional()
16964
+ }).strict();
16965
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16966
+ var harnessPluginListResultSchema = external_exports.object({
16967
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16968
+ }).strict();
16969
+ var harnessPluginConfigurationSchema = external_exports.object({
16970
+ version: external_exports.literal(1),
16971
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16972
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16973
+ message: "Enabled plugin IDs must be unique",
16974
+ path: ["enabled"]
16975
+ });
16976
+
16964
16977
  // packages/shared-contracts/dist/harness-route.js
16965
16978
  var harnessPluginRouteSchema = external_exports.object({
16966
16979
  harnessId: harnessPluginIdSchema,
@@ -17164,6 +17177,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
17164
17177
  }).strict();
17165
17178
  var harnessCommandCatalogSchema = external_exports.object({
17166
17179
  commands: external_exports.array(harnessCommandDescriptorSchema),
17180
+ /** Partial discovery failures; valid commands remain available. */
17181
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
17167
17182
  /**
17168
17183
  * `live` when the catalog includes what a native Session reports for its
17169
17184
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -17199,7 +17214,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
17199
17214
  }).strict();
17200
17215
  var threadCommandExecuteResultSchema = external_exports.object({
17201
17216
  accepted: external_exports.literal(true),
17202
- turnId: hostTurnIdSchema
17217
+ turnId: hostTurnIdSchema.optional()
17203
17218
  }).strict();
17204
17219
 
17205
17220
  // packages/shared-contracts/dist/json-rpc.js