@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
@@ -15098,7 +15098,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15098
15098
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15099
15099
  message: "Value must not be empty or whitespace"
15100
15100
  });
15101
- 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();
15101
+ 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();
15102
15102
  var harnessPermissionModeSchema = external_exports.object({
15103
15103
  id: harnessPermissionModeIdSchema,
15104
15104
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15482,7 +15482,12 @@ var threadInspectionParamsSchema = external_exports.object({
15482
15482
  }).strict();
15483
15483
  var codexThreadInspectionSchema = external_exports.object({
15484
15484
  owner: external_exports.literal("codex"),
15485
- locked: external_exports.literal(true),
15485
+ locked: external_exports.boolean(),
15486
+ effectiveModel: harnessModelRefSchema.optional(),
15487
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15488
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15489
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15490
+ history: harnessHistoryCapabilitiesSchema.optional(),
15486
15491
  supportsThreadReferences: external_exports.literal(true).optional()
15487
15492
  }).strict();
15488
15493
  var externalThreadInspectionSchema = external_exports.object({
@@ -15704,7 +15709,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15704
15709
  thread: external_exports.object({
15705
15710
  id: external_exports.string().min(1),
15706
15711
  cwd: external_exports.string(),
15707
- modelProvider: external_exports.literal("codexhost"),
15712
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15713
+ modelProvider: external_exports.string().min(1),
15708
15714
  createdAt: external_exports.number(),
15709
15715
  updatedAt: external_exports.number(),
15710
15716
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15718,6 +15724,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15718
15724
  nextCursor: external_exports.string().nullable()
15719
15725
  }),
15720
15726
  configuration: external_exports.object({
15727
+ /** Native Codex model names are not external Harness transport refs. */
15728
+ native: external_exports.object({
15729
+ model: external_exports.string().min(1).max(1024).optional(),
15730
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15731
+ }).optional(),
15721
15732
  effectiveModel: harnessModelRefSchema.optional(),
15722
15733
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15723
15734
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15744,6 +15755,16 @@ var clientChannelResponseSchema = external_exports.object({
15744
15755
  result: record2
15745
15756
  });
15746
15757
 
15758
+ // ../../shared-contracts/dist/thread-catalog.js
15759
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15760
+ var threadCatalogReadResultSchema = external_exports.object({
15761
+ threads: external_exports.array(jsonObjectSchema),
15762
+ ownership: external_exports.array(threadOwnershipSchema),
15763
+ /** Known archived IDs, including visible local external records even when their rows are
15764
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15765
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15766
+ }).strict();
15767
+
15747
15768
  // ../../shared-contracts/dist/voice.js
15748
15769
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15749
15770
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15959,93 +15980,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15959
15980
  timeoutMinutes: 30
15960
15981
  });
15961
15982
 
15962
- // ../../shared-contracts/dist/harness-plugins.js
15963
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15964
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15965
- var HARNESS_PLUGIN_LIMIT = 128;
15966
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15967
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15968
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15969
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15970
- 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");
15971
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15972
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15973
- var harnessInstallationGuideSchema = external_exports.object({
15974
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15975
- before: localizedTextSchema.optional(),
15976
- after: localizedTextSchema.optional(),
15977
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15978
- }).strict();
15979
- var pluginPresentationShape = {
15980
- id: installedHarnessPluginIdSchema,
15981
- name: external_exports.string().trim().min(1).max(128),
15982
- version: external_exports.string().min(1).max(128),
15983
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15984
- kind: external_exports.literal("usage").optional(),
15985
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15986
- iconStyle: external_exports.object({
15987
- vector: external_exports.object({
15988
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15989
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15990
- paths: external_exports.array(external_exports.object({
15991
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15992
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15993
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15994
- }).strict()).min(1).max(32)
15995
- }).strict().optional(),
15996
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15997
- borderRadius: external_exports.number().min(0).max(50).optional(),
15998
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15999
- }).strict().optional(),
16000
- installation: harnessInstallationGuideSchema.optional(),
16001
- notice: localizedTextSchema.optional(),
16002
- /** The factory accepts a persisted local entrypoint through its construction context. */
16003
- launchCommand: external_exports.literal(true).optional(),
16004
- links: external_exports.object({
16005
- website: documentationUrlSchema.optional(),
16006
- documentation: documentationUrlSchema.optional(),
16007
- installation: documentationUrlSchema.optional()
16008
- }).strict().optional()
16009
- };
16010
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16011
- message: "Plugin surfaces must be unique"
16012
- });
16013
- var harnessPluginManifestSchema = external_exports.object({
16014
- manifestVersion: external_exports.literal(1),
16015
- ...pluginPresentationShape,
16016
- adapterApiVersion: external_exports.number().int().positive(),
16017
- entry: relativeResourceSchema,
16018
- icon: relativeResourceSchema.optional(),
16019
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16020
- surfaces: harnessPluginSurfacesSchema.optional()
16021
- }).strict();
16022
- 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);
16023
- var harnessPluginDescriptorSchema = external_exports.object({
16024
- ...pluginPresentationShape,
16025
- icon: harnessPluginIconSchema.optional()
16026
- }).strict();
16027
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16028
- var harnessPluginListResultSchema = external_exports.object({
16029
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16030
- }).strict();
16031
- var harnessPluginConfigurationSchema = external_exports.object({
16032
- version: external_exports.literal(1),
16033
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16034
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16035
- message: "Enabled plugin IDs must be unique",
16036
- path: ["enabled"]
16037
- });
16038
-
16039
15983
  // ../../shared-contracts/dist/harness-preferences.js
16040
15984
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16041
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15985
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16042
15986
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16043
15987
  model: harnessModelRefSchema.optional(),
16044
15988
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16045
15989
  permissionModeId: harnessPermissionModeIdSchema.optional()
16046
15990
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16047
15991
  var newThreadDefaultsSchema = external_exports.strictObject({
16048
- lastHarness: installedHarnessPluginIdSchema.optional(),
15992
+ lastHarness: harnessIdSchema.optional(),
16049
15993
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16050
15994
  });
16051
15995
  var modelId = external_exports.string().min(1).max(1024);
@@ -16066,19 +16010,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16066
16010
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16067
16011
  external_exports.strictObject({
16068
16012
  kind: external_exports.literal("favorite"),
16069
- harnessId: installedHarnessPluginIdSchema,
16013
+ harnessId: harnessIdSchema,
16070
16014
  modelId,
16071
16015
  enabled: external_exports.boolean()
16072
16016
  }),
16073
16017
  external_exports.strictObject({
16074
16018
  kind: external_exports.literal("favorites"),
16075
- harnessId: installedHarnessPluginIdSchema,
16019
+ harnessId: harnessIdSchema,
16076
16020
  modelIds: external_exports.array(modelId).max(2048)
16077
16021
  }),
16078
16022
  external_exports.strictObject({
16079
16023
  kind: external_exports.literal("newThread"),
16080
- lastHarness: installedHarnessPluginIdSchema.optional(),
16081
- harnessId: installedHarnessPluginIdSchema.optional(),
16024
+ lastHarness: harnessIdSchema.optional(),
16025
+ harnessId: harnessIdSchema.optional(),
16082
16026
  configuration: harnessDefaultConfigurationSchema.optional()
16083
16027
  })
16084
16028
  ]);
@@ -16094,12 +16038,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16094
16038
  code: "custom",
16095
16039
  message: "A default Harness or complete configuration is required"
16096
16040
  });
16097
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16098
- if (harnessId === "codex")
16099
- ctx.addIssue({
16100
- code: "custom",
16101
- message: "Official Codex is not an external Harness"
16102
- });
16103
16041
  }
16104
16042
  });
16105
16043
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16476,6 +16414,76 @@ var harnessAccountListResultSchema = external_exports.object({
16476
16414
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16477
16415
  }).strict();
16478
16416
 
16417
+ // ../../shared-contracts/dist/harness-plugins.js
16418
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16419
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16420
+ var HARNESS_PLUGIN_LIMIT = 128;
16421
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16422
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16423
+ 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");
16424
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16425
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16426
+ var harnessInstallationGuideSchema = external_exports.object({
16427
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16428
+ before: localizedTextSchema.optional(),
16429
+ after: localizedTextSchema.optional(),
16430
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16431
+ }).strict();
16432
+ var pluginPresentationShape = {
16433
+ id: installedHarnessPluginIdSchema,
16434
+ name: external_exports.string().trim().min(1).max(128),
16435
+ version: external_exports.string().min(1).max(128),
16436
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16437
+ kind: external_exports.literal("usage").optional(),
16438
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16439
+ iconStyle: external_exports.object({
16440
+ vector: external_exports.object({
16441
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16442
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16443
+ paths: external_exports.array(external_exports.object({
16444
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16445
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16446
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16447
+ }).strict()).min(1).max(32)
16448
+ }).strict().optional(),
16449
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16450
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16451
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16452
+ }).strict().optional(),
16453
+ installation: harnessInstallationGuideSchema.optional(),
16454
+ notice: localizedTextSchema.optional(),
16455
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16456
+ launchCommand: external_exports.literal(true).optional(),
16457
+ links: external_exports.object({
16458
+ website: documentationUrlSchema.optional(),
16459
+ documentation: documentationUrlSchema.optional(),
16460
+ installation: documentationUrlSchema.optional()
16461
+ }).strict().optional()
16462
+ };
16463
+ var harnessPluginManifestSchema = external_exports.object({
16464
+ manifestVersion: external_exports.literal(1),
16465
+ ...pluginPresentationShape,
16466
+ adapterApiVersion: external_exports.number().int().positive(),
16467
+ entry: relativeResourceSchema,
16468
+ icon: relativeResourceSchema.optional()
16469
+ }).strict();
16470
+ 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);
16471
+ var harnessPluginDescriptorSchema = external_exports.object({
16472
+ ...pluginPresentationShape,
16473
+ icon: harnessPluginIconSchema.optional()
16474
+ }).strict();
16475
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16476
+ var harnessPluginListResultSchema = external_exports.object({
16477
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16478
+ }).strict();
16479
+ var harnessPluginConfigurationSchema = external_exports.object({
16480
+ version: external_exports.literal(1),
16481
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16482
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16483
+ message: "Enabled plugin IDs must be unique",
16484
+ path: ["enabled"]
16485
+ });
16486
+
16479
16487
  // ../../shared-contracts/dist/harness-route.js
16480
16488
  var harnessPluginRouteSchema = external_exports.object({
16481
16489
  harnessId: harnessPluginIdSchema,
@@ -16669,6 +16677,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16669
16677
  }).strict();
16670
16678
  var harnessCommandCatalogSchema = external_exports.object({
16671
16679
  commands: external_exports.array(harnessCommandDescriptorSchema),
16680
+ /** Partial discovery failures; valid commands remain available. */
16681
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16672
16682
  /**
16673
16683
  * `live` when the catalog includes what a native Session reports for its
16674
16684
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16704,7 +16714,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16704
16714
  }).strict();
16705
16715
  var threadCommandExecuteResultSchema = external_exports.object({
16706
16716
  accepted: external_exports.literal(true),
16707
- turnId: hostTurnIdSchema
16717
+ turnId: hostTurnIdSchema.optional()
16708
16718
  }).strict();
16709
16719
 
16710
16720
  // ../../shared-contracts/dist/json-rpc.js
@@ -14616,7 +14616,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14616
14616
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14617
14617
  message: "Value must not be empty or whitespace"
14618
14618
  });
14619
- 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();
14619
+ 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();
14620
14620
  var harnessPermissionModeSchema = external_exports.object({
14621
14621
  id: harnessPermissionModeIdSchema,
14622
14622
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15000,7 +15000,12 @@ var threadInspectionParamsSchema = external_exports.object({
15000
15000
  }).strict();
15001
15001
  var codexThreadInspectionSchema = external_exports.object({
15002
15002
  owner: external_exports.literal("codex"),
15003
- locked: external_exports.literal(true),
15003
+ locked: external_exports.boolean(),
15004
+ effectiveModel: harnessModelRefSchema.optional(),
15005
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15006
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15007
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15008
+ history: harnessHistoryCapabilitiesSchema.optional(),
15004
15009
  supportsThreadReferences: external_exports.literal(true).optional()
15005
15010
  }).strict();
15006
15011
  var externalThreadInspectionSchema = external_exports.object({
@@ -15222,7 +15227,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15222
15227
  thread: external_exports.object({
15223
15228
  id: external_exports.string().min(1),
15224
15229
  cwd: external_exports.string(),
15225
- modelProvider: external_exports.literal("codexhost"),
15230
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15231
+ modelProvider: external_exports.string().min(1),
15226
15232
  createdAt: external_exports.number(),
15227
15233
  updatedAt: external_exports.number(),
15228
15234
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15236,6 +15242,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15236
15242
  nextCursor: external_exports.string().nullable()
15237
15243
  }),
15238
15244
  configuration: external_exports.object({
15245
+ /** Native Codex model names are not external Harness transport refs. */
15246
+ native: external_exports.object({
15247
+ model: external_exports.string().min(1).max(1024).optional(),
15248
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15249
+ }).optional(),
15239
15250
  effectiveModel: harnessModelRefSchema.optional(),
15240
15251
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15241
15252
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15262,6 +15273,16 @@ var clientChannelResponseSchema = external_exports.object({
15262
15273
  result: record2
15263
15274
  });
15264
15275
 
15276
+ // ../../shared-contracts/dist/thread-catalog.js
15277
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15278
+ var threadCatalogReadResultSchema = external_exports.object({
15279
+ threads: external_exports.array(jsonObjectSchema),
15280
+ ownership: external_exports.array(threadOwnershipSchema),
15281
+ /** Known archived IDs, including visible local external records even when their rows are
15282
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15283
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15284
+ }).strict();
15285
+
15265
15286
  // ../../shared-contracts/dist/voice.js
15266
15287
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15267
15288
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15477,93 +15498,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15477
15498
  timeoutMinutes: 30
15478
15499
  });
15479
15500
 
15480
- // ../../shared-contracts/dist/harness-plugins.js
15481
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15482
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15483
- var HARNESS_PLUGIN_LIMIT = 128;
15484
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15485
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15486
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15487
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15488
- 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");
15489
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15490
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15491
- var harnessInstallationGuideSchema = external_exports.object({
15492
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15493
- before: localizedTextSchema.optional(),
15494
- after: localizedTextSchema.optional(),
15495
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15496
- }).strict();
15497
- var pluginPresentationShape = {
15498
- id: installedHarnessPluginIdSchema,
15499
- name: external_exports.string().trim().min(1).max(128),
15500
- version: external_exports.string().min(1).max(128),
15501
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15502
- kind: external_exports.literal("usage").optional(),
15503
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15504
- iconStyle: external_exports.object({
15505
- vector: external_exports.object({
15506
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15507
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15508
- paths: external_exports.array(external_exports.object({
15509
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15510
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15511
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15512
- }).strict()).min(1).max(32)
15513
- }).strict().optional(),
15514
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15515
- borderRadius: external_exports.number().min(0).max(50).optional(),
15516
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15517
- }).strict().optional(),
15518
- installation: harnessInstallationGuideSchema.optional(),
15519
- notice: localizedTextSchema.optional(),
15520
- /** The factory accepts a persisted local entrypoint through its construction context. */
15521
- launchCommand: external_exports.literal(true).optional(),
15522
- links: external_exports.object({
15523
- website: documentationUrlSchema.optional(),
15524
- documentation: documentationUrlSchema.optional(),
15525
- installation: documentationUrlSchema.optional()
15526
- }).strict().optional()
15527
- };
15528
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15529
- message: "Plugin surfaces must be unique"
15530
- });
15531
- var harnessPluginManifestSchema = external_exports.object({
15532
- manifestVersion: external_exports.literal(1),
15533
- ...pluginPresentationShape,
15534
- adapterApiVersion: external_exports.number().int().positive(),
15535
- entry: relativeResourceSchema,
15536
- icon: relativeResourceSchema.optional(),
15537
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15538
- surfaces: harnessPluginSurfacesSchema.optional()
15539
- }).strict();
15540
- 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);
15541
- var harnessPluginDescriptorSchema = external_exports.object({
15542
- ...pluginPresentationShape,
15543
- icon: harnessPluginIconSchema.optional()
15544
- }).strict();
15545
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15546
- var harnessPluginListResultSchema = external_exports.object({
15547
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15548
- }).strict();
15549
- var harnessPluginConfigurationSchema = external_exports.object({
15550
- version: external_exports.literal(1),
15551
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15552
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15553
- message: "Enabled plugin IDs must be unique",
15554
- path: ["enabled"]
15555
- });
15556
-
15557
15501
  // ../../shared-contracts/dist/harness-preferences.js
15558
15502
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15559
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15503
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15560
15504
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15561
15505
  model: harnessModelRefSchema.optional(),
15562
15506
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15563
15507
  permissionModeId: harnessPermissionModeIdSchema.optional()
15564
15508
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15565
15509
  var newThreadDefaultsSchema = external_exports.strictObject({
15566
- lastHarness: installedHarnessPluginIdSchema.optional(),
15510
+ lastHarness: harnessIdSchema.optional(),
15567
15511
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15568
15512
  });
15569
15513
  var modelId = external_exports.string().min(1).max(1024);
@@ -15584,19 +15528,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15584
15528
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15585
15529
  external_exports.strictObject({
15586
15530
  kind: external_exports.literal("favorite"),
15587
- harnessId: installedHarnessPluginIdSchema,
15531
+ harnessId: harnessIdSchema,
15588
15532
  modelId,
15589
15533
  enabled: external_exports.boolean()
15590
15534
  }),
15591
15535
  external_exports.strictObject({
15592
15536
  kind: external_exports.literal("favorites"),
15593
- harnessId: installedHarnessPluginIdSchema,
15537
+ harnessId: harnessIdSchema,
15594
15538
  modelIds: external_exports.array(modelId).max(2048)
15595
15539
  }),
15596
15540
  external_exports.strictObject({
15597
15541
  kind: external_exports.literal("newThread"),
15598
- lastHarness: installedHarnessPluginIdSchema.optional(),
15599
- harnessId: installedHarnessPluginIdSchema.optional(),
15542
+ lastHarness: harnessIdSchema.optional(),
15543
+ harnessId: harnessIdSchema.optional(),
15600
15544
  configuration: harnessDefaultConfigurationSchema.optional()
15601
15545
  })
15602
15546
  ]);
@@ -15612,12 +15556,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15612
15556
  code: "custom",
15613
15557
  message: "A default Harness or complete configuration is required"
15614
15558
  });
15615
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15616
- if (harnessId === "codex")
15617
- ctx.addIssue({
15618
- code: "custom",
15619
- message: "Official Codex is not an external Harness"
15620
- });
15621
15559
  }
15622
15560
  });
15623
15561
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -15994,6 +15932,76 @@ var harnessAccountListResultSchema = external_exports.object({
15994
15932
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
15995
15933
  }).strict();
15996
15934
 
15935
+ // ../../shared-contracts/dist/harness-plugins.js
15936
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15937
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15938
+ var HARNESS_PLUGIN_LIMIT = 128;
15939
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15940
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15941
+ 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");
15942
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15943
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15944
+ var harnessInstallationGuideSchema = external_exports.object({
15945
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15946
+ before: localizedTextSchema.optional(),
15947
+ after: localizedTextSchema.optional(),
15948
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15949
+ }).strict();
15950
+ var pluginPresentationShape = {
15951
+ id: installedHarnessPluginIdSchema,
15952
+ name: external_exports.string().trim().min(1).max(128),
15953
+ version: external_exports.string().min(1).max(128),
15954
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15955
+ kind: external_exports.literal("usage").optional(),
15956
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15957
+ iconStyle: external_exports.object({
15958
+ vector: external_exports.object({
15959
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15960
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15961
+ paths: external_exports.array(external_exports.object({
15962
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15963
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15964
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15965
+ }).strict()).min(1).max(32)
15966
+ }).strict().optional(),
15967
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15968
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15969
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15970
+ }).strict().optional(),
15971
+ installation: harnessInstallationGuideSchema.optional(),
15972
+ notice: localizedTextSchema.optional(),
15973
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15974
+ launchCommand: external_exports.literal(true).optional(),
15975
+ links: external_exports.object({
15976
+ website: documentationUrlSchema.optional(),
15977
+ documentation: documentationUrlSchema.optional(),
15978
+ installation: documentationUrlSchema.optional()
15979
+ }).strict().optional()
15980
+ };
15981
+ var harnessPluginManifestSchema = external_exports.object({
15982
+ manifestVersion: external_exports.literal(1),
15983
+ ...pluginPresentationShape,
15984
+ adapterApiVersion: external_exports.number().int().positive(),
15985
+ entry: relativeResourceSchema,
15986
+ icon: relativeResourceSchema.optional()
15987
+ }).strict();
15988
+ 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);
15989
+ var harnessPluginDescriptorSchema = external_exports.object({
15990
+ ...pluginPresentationShape,
15991
+ icon: harnessPluginIconSchema.optional()
15992
+ }).strict();
15993
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
15994
+ var harnessPluginListResultSchema = external_exports.object({
15995
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15996
+ }).strict();
15997
+ var harnessPluginConfigurationSchema = external_exports.object({
15998
+ version: external_exports.literal(1),
15999
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16000
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16001
+ message: "Enabled plugin IDs must be unique",
16002
+ path: ["enabled"]
16003
+ });
16004
+
15997
16005
  // ../../shared-contracts/dist/harness-route.js
15998
16006
  var harnessPluginRouteSchema = external_exports.object({
15999
16007
  harnessId: harnessPluginIdSchema,
@@ -16187,6 +16195,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16187
16195
  }).strict();
16188
16196
  var harnessCommandCatalogSchema = external_exports.object({
16189
16197
  commands: external_exports.array(harnessCommandDescriptorSchema),
16198
+ /** Partial discovery failures; valid commands remain available. */
16199
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16190
16200
  /**
16191
16201
  * `live` when the catalog includes what a native Session reports for its
16192
16202
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16222,7 +16232,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16222
16232
  }).strict();
16223
16233
  var threadCommandExecuteResultSchema = external_exports.object({
16224
16234
  accepted: external_exports.literal(true),
16225
- turnId: hostTurnIdSchema
16235
+ turnId: hostTurnIdSchema.optional()
16226
16236
  }).strict();
16227
16237
 
16228
16238
  // ../../shared-contracts/dist/json-rpc.js