@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
@@ -18673,7 +18673,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
18673
18673
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
18674
18674
  message: "Value must not be empty or whitespace"
18675
18675
  });
18676
- 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();
18676
+ 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();
18677
18677
  var harnessPermissionModeSchema = external_exports.object({
18678
18678
  id: harnessPermissionModeIdSchema,
18679
18679
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -19057,7 +19057,12 @@ var threadInspectionParamsSchema = external_exports.object({
19057
19057
  }).strict();
19058
19058
  var codexThreadInspectionSchema = external_exports.object({
19059
19059
  owner: external_exports.literal("codex"),
19060
- locked: external_exports.literal(true),
19060
+ locked: external_exports.boolean(),
19061
+ effectiveModel: harnessModelRefSchema.optional(),
19062
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
19063
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19064
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
19065
+ history: harnessHistoryCapabilitiesSchema.optional(),
19061
19066
  supportsThreadReferences: external_exports.literal(true).optional()
19062
19067
  }).strict();
19063
19068
  var externalThreadInspectionSchema = external_exports.object({
@@ -19279,7 +19284,8 @@ var clientThreadSnapshotSchema = external_exports.object({
19279
19284
  thread: external_exports.object({
19280
19285
  id: external_exports.string().min(1),
19281
19286
  cwd: external_exports.string(),
19282
- modelProvider: external_exports.literal("codexhost"),
19287
+ /** External rows use codexhost; native Codex rows retain their official provider. */
19288
+ modelProvider: external_exports.string().min(1),
19283
19289
  createdAt: external_exports.number(),
19284
19290
  updatedAt: external_exports.number(),
19285
19291
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -19293,6 +19299,11 @@ var clientThreadSnapshotSchema = external_exports.object({
19293
19299
  nextCursor: external_exports.string().nullable()
19294
19300
  }),
19295
19301
  configuration: external_exports.object({
19302
+ /** Native Codex model names are not external Harness transport refs. */
19303
+ native: external_exports.object({
19304
+ model: external_exports.string().min(1).max(1024).optional(),
19305
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
19306
+ }).optional(),
19296
19307
  effectiveModel: harnessModelRefSchema.optional(),
19297
19308
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19298
19309
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -19319,6 +19330,16 @@ var clientChannelResponseSchema = external_exports.object({
19319
19330
  result: record2
19320
19331
  });
19321
19332
 
19333
+ // ../../shared-contracts/dist/thread-catalog.js
19334
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
19335
+ var threadCatalogReadResultSchema = external_exports.object({
19336
+ threads: external_exports.array(jsonObjectSchema),
19337
+ ownership: external_exports.array(threadOwnershipSchema),
19338
+ /** Known archived IDs, including visible local external records even when their rows are
19339
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
19340
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
19341
+ }).strict();
19342
+
19322
19343
  // ../../shared-contracts/dist/voice.js
19323
19344
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
19324
19345
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -19534,93 +19555,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
19534
19555
  timeoutMinutes: 30
19535
19556
  });
19536
19557
 
19537
- // ../../shared-contracts/dist/harness-plugins.js
19538
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19539
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
19540
- var HARNESS_PLUGIN_LIMIT = 128;
19541
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
19542
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
19543
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
19544
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
19545
- 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");
19546
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
19547
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
19548
- var harnessInstallationGuideSchema = external_exports.object({
19549
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
19550
- before: localizedTextSchema.optional(),
19551
- after: localizedTextSchema.optional(),
19552
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
19553
- }).strict();
19554
- var pluginPresentationShape = {
19555
- id: installedHarnessPluginIdSchema,
19556
- name: external_exports.string().trim().min(1).max(128),
19557
- version: external_exports.string().min(1).max(128),
19558
- /** Capability-only plugin; omitted for existing session-capable plugins. */
19559
- kind: external_exports.literal("usage").optional(),
19560
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
19561
- iconStyle: external_exports.object({
19562
- vector: external_exports.object({
19563
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
19564
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
19565
- paths: external_exports.array(external_exports.object({
19566
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
19567
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
19568
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
19569
- }).strict()).min(1).max(32)
19570
- }).strict().optional(),
19571
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
19572
- borderRadius: external_exports.number().min(0).max(50).optional(),
19573
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
19574
- }).strict().optional(),
19575
- installation: harnessInstallationGuideSchema.optional(),
19576
- notice: localizedTextSchema.optional(),
19577
- /** The factory accepts a persisted local entrypoint through its construction context. */
19578
- launchCommand: external_exports.literal(true).optional(),
19579
- links: external_exports.object({
19580
- website: documentationUrlSchema.optional(),
19581
- documentation: documentationUrlSchema.optional(),
19582
- installation: documentationUrlSchema.optional()
19583
- }).strict().optional()
19584
- };
19585
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
19586
- message: "Plugin surfaces must be unique"
19587
- });
19588
- var harnessPluginManifestSchema = external_exports.object({
19589
- manifestVersion: external_exports.literal(1),
19590
- ...pluginPresentationShape,
19591
- adapterApiVersion: external_exports.number().int().positive(),
19592
- entry: relativeResourceSchema,
19593
- icon: relativeResourceSchema.optional(),
19594
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
19595
- surfaces: harnessPluginSurfacesSchema.optional()
19596
- }).strict();
19597
- 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);
19598
- var harnessPluginDescriptorSchema = external_exports.object({
19599
- ...pluginPresentationShape,
19600
- icon: harnessPluginIconSchema.optional()
19601
- }).strict();
19602
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
19603
- var harnessPluginListResultSchema = external_exports.object({
19604
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
19605
- }).strict();
19606
- var harnessPluginConfigurationSchema = external_exports.object({
19607
- version: external_exports.literal(1),
19608
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
19609
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
19610
- message: "Enabled plugin IDs must be unique",
19611
- path: ["enabled"]
19612
- });
19613
-
19614
19558
  // ../../shared-contracts/dist/harness-preferences.js
19615
19559
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
19616
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
19560
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
19617
19561
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
19618
19562
  model: harnessModelRefSchema.optional(),
19619
19563
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
19620
19564
  permissionModeId: harnessPermissionModeIdSchema.optional()
19621
19565
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
19622
19566
  var newThreadDefaultsSchema = external_exports.strictObject({
19623
- lastHarness: installedHarnessPluginIdSchema.optional(),
19567
+ lastHarness: harnessIdSchema.optional(),
19624
19568
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
19625
19569
  });
19626
19570
  var modelId = external_exports.string().min(1).max(1024);
@@ -19641,19 +19585,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
19641
19585
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
19642
19586
  external_exports.strictObject({
19643
19587
  kind: external_exports.literal("favorite"),
19644
- harnessId: installedHarnessPluginIdSchema,
19588
+ harnessId: harnessIdSchema,
19645
19589
  modelId,
19646
19590
  enabled: external_exports.boolean()
19647
19591
  }),
19648
19592
  external_exports.strictObject({
19649
19593
  kind: external_exports.literal("favorites"),
19650
- harnessId: installedHarnessPluginIdSchema,
19594
+ harnessId: harnessIdSchema,
19651
19595
  modelIds: external_exports.array(modelId).max(2048)
19652
19596
  }),
19653
19597
  external_exports.strictObject({
19654
19598
  kind: external_exports.literal("newThread"),
19655
- lastHarness: installedHarnessPluginIdSchema.optional(),
19656
- harnessId: installedHarnessPluginIdSchema.optional(),
19599
+ lastHarness: harnessIdSchema.optional(),
19600
+ harnessId: harnessIdSchema.optional(),
19657
19601
  configuration: harnessDefaultConfigurationSchema.optional()
19658
19602
  })
19659
19603
  ]);
@@ -19669,12 +19613,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
19669
19613
  code: "custom",
19670
19614
  message: "A default Harness or complete configuration is required"
19671
19615
  });
19672
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
19673
- if (harnessId === "codex")
19674
- ctx.addIssue({
19675
- code: "custom",
19676
- message: "Official Codex is not an external Harness"
19677
- });
19678
19616
  }
19679
19617
  });
19680
19618
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -20051,6 +19989,76 @@ var harnessAccountListResultSchema = external_exports.object({
20051
19989
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
20052
19990
  }).strict();
20053
19991
 
19992
+ // ../../shared-contracts/dist/harness-plugins.js
19993
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
19994
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
19995
+ var HARNESS_PLUGIN_LIMIT = 128;
19996
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
19997
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
19998
+ 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");
19999
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
20000
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
20001
+ var harnessInstallationGuideSchema = external_exports.object({
20002
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
20003
+ before: localizedTextSchema.optional(),
20004
+ after: localizedTextSchema.optional(),
20005
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
20006
+ }).strict();
20007
+ var pluginPresentationShape = {
20008
+ id: installedHarnessPluginIdSchema,
20009
+ name: external_exports.string().trim().min(1).max(128),
20010
+ version: external_exports.string().min(1).max(128),
20011
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
20012
+ kind: external_exports.literal("usage").optional(),
20013
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
20014
+ iconStyle: external_exports.object({
20015
+ vector: external_exports.object({
20016
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
20017
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
20018
+ paths: external_exports.array(external_exports.object({
20019
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
20020
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
20021
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
20022
+ }).strict()).min(1).max(32)
20023
+ }).strict().optional(),
20024
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
20025
+ borderRadius: external_exports.number().min(0).max(50).optional(),
20026
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
20027
+ }).strict().optional(),
20028
+ installation: harnessInstallationGuideSchema.optional(),
20029
+ notice: localizedTextSchema.optional(),
20030
+ /** The factory accepts a persisted local entrypoint through its construction context. */
20031
+ launchCommand: external_exports.literal(true).optional(),
20032
+ links: external_exports.object({
20033
+ website: documentationUrlSchema.optional(),
20034
+ documentation: documentationUrlSchema.optional(),
20035
+ installation: documentationUrlSchema.optional()
20036
+ }).strict().optional()
20037
+ };
20038
+ var harnessPluginManifestSchema = external_exports.object({
20039
+ manifestVersion: external_exports.literal(1),
20040
+ ...pluginPresentationShape,
20041
+ adapterApiVersion: external_exports.number().int().positive(),
20042
+ entry: relativeResourceSchema,
20043
+ icon: relativeResourceSchema.optional()
20044
+ }).strict();
20045
+ 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);
20046
+ var harnessPluginDescriptorSchema = external_exports.object({
20047
+ ...pluginPresentationShape,
20048
+ icon: harnessPluginIconSchema.optional()
20049
+ }).strict();
20050
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
20051
+ var harnessPluginListResultSchema = external_exports.object({
20052
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
20053
+ }).strict();
20054
+ var harnessPluginConfigurationSchema = external_exports.object({
20055
+ version: external_exports.literal(1),
20056
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
20057
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
20058
+ message: "Enabled plugin IDs must be unique",
20059
+ path: ["enabled"]
20060
+ });
20061
+
20054
20062
  // ../../shared-contracts/dist/harness-route.js
20055
20063
  var harnessPluginRouteSchema = external_exports.object({
20056
20064
  harnessId: harnessPluginIdSchema,
@@ -20244,6 +20252,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
20244
20252
  }).strict();
20245
20253
  var harnessCommandCatalogSchema = external_exports.object({
20246
20254
  commands: external_exports.array(harnessCommandDescriptorSchema),
20255
+ /** Partial discovery failures; valid commands remain available. */
20256
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
20247
20257
  /**
20248
20258
  * `live` when the catalog includes what a native Session reports for its
20249
20259
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -20279,7 +20289,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
20279
20289
  }).strict();
20280
20290
  var threadCommandExecuteResultSchema = external_exports.object({
20281
20291
  accepted: external_exports.literal(true),
20282
- turnId: hostTurnIdSchema
20292
+ turnId: hostTurnIdSchema.optional()
20283
20293
  }).strict();
20284
20294
 
20285
20295
  // ../../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