@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
@@ -15103,7 +15103,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15103
15103
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15104
15104
  message: "Value must not be empty or whitespace"
15105
15105
  });
15106
- 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();
15106
+ 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();
15107
15107
  var harnessPermissionModeSchema = external_exports.object({
15108
15108
  id: harnessPermissionModeIdSchema,
15109
15109
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15487,7 +15487,12 @@ var threadInspectionParamsSchema = external_exports.object({
15487
15487
  }).strict();
15488
15488
  var codexThreadInspectionSchema = external_exports.object({
15489
15489
  owner: external_exports.literal("codex"),
15490
- locked: external_exports.literal(true),
15490
+ locked: external_exports.boolean(),
15491
+ effectiveModel: harnessModelRefSchema.optional(),
15492
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15493
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15494
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15495
+ history: harnessHistoryCapabilitiesSchema.optional(),
15491
15496
  supportsThreadReferences: external_exports.literal(true).optional()
15492
15497
  }).strict();
15493
15498
  var externalThreadInspectionSchema = external_exports.object({
@@ -15709,7 +15714,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15709
15714
  thread: external_exports.object({
15710
15715
  id: external_exports.string().min(1),
15711
15716
  cwd: external_exports.string(),
15712
- modelProvider: external_exports.literal("codexhost"),
15717
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15718
+ modelProvider: external_exports.string().min(1),
15713
15719
  createdAt: external_exports.number(),
15714
15720
  updatedAt: external_exports.number(),
15715
15721
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15723,6 +15729,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15723
15729
  nextCursor: external_exports.string().nullable()
15724
15730
  }),
15725
15731
  configuration: external_exports.object({
15732
+ /** Native Codex model names are not external Harness transport refs. */
15733
+ native: external_exports.object({
15734
+ model: external_exports.string().min(1).max(1024).optional(),
15735
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15736
+ }).optional(),
15726
15737
  effectiveModel: harnessModelRefSchema.optional(),
15727
15738
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15728
15739
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15749,6 +15760,16 @@ var clientChannelResponseSchema = external_exports.object({
15749
15760
  result: record2
15750
15761
  });
15751
15762
 
15763
+ // ../../shared-contracts/dist/thread-catalog.js
15764
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15765
+ var threadCatalogReadResultSchema = external_exports.object({
15766
+ threads: external_exports.array(jsonObjectSchema),
15767
+ ownership: external_exports.array(threadOwnershipSchema),
15768
+ /** Known archived IDs, including visible local external records even when their rows are
15769
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15770
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15771
+ }).strict();
15772
+
15752
15773
  // ../../shared-contracts/dist/voice.js
15753
15774
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15754
15775
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15964,93 +15985,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15964
15985
  timeoutMinutes: 30
15965
15986
  });
15966
15987
 
15967
- // ../../shared-contracts/dist/harness-plugins.js
15968
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15969
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15970
- var HARNESS_PLUGIN_LIMIT = 128;
15971
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15972
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15973
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15974
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15975
- 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");
15976
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15977
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15978
- var harnessInstallationGuideSchema = external_exports.object({
15979
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15980
- before: localizedTextSchema.optional(),
15981
- after: localizedTextSchema.optional(),
15982
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15983
- }).strict();
15984
- var pluginPresentationShape = {
15985
- id: installedHarnessPluginIdSchema,
15986
- name: external_exports.string().trim().min(1).max(128),
15987
- version: external_exports.string().min(1).max(128),
15988
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15989
- kind: external_exports.literal("usage").optional(),
15990
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15991
- iconStyle: external_exports.object({
15992
- vector: external_exports.object({
15993
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15994
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15995
- paths: external_exports.array(external_exports.object({
15996
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15997
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15998
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15999
- }).strict()).min(1).max(32)
16000
- }).strict().optional(),
16001
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16002
- borderRadius: external_exports.number().min(0).max(50).optional(),
16003
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
16004
- }).strict().optional(),
16005
- installation: harnessInstallationGuideSchema.optional(),
16006
- notice: localizedTextSchema.optional(),
16007
- /** The factory accepts a persisted local entrypoint through its construction context. */
16008
- launchCommand: external_exports.literal(true).optional(),
16009
- links: external_exports.object({
16010
- website: documentationUrlSchema.optional(),
16011
- documentation: documentationUrlSchema.optional(),
16012
- installation: documentationUrlSchema.optional()
16013
- }).strict().optional()
16014
- };
16015
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
16016
- message: "Plugin surfaces must be unique"
16017
- });
16018
- var harnessPluginManifestSchema = external_exports.object({
16019
- manifestVersion: external_exports.literal(1),
16020
- ...pluginPresentationShape,
16021
- adapterApiVersion: external_exports.number().int().positive(),
16022
- entry: relativeResourceSchema,
16023
- icon: relativeResourceSchema.optional(),
16024
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
16025
- surfaces: harnessPluginSurfacesSchema.optional()
16026
- }).strict();
16027
- 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);
16028
- var harnessPluginDescriptorSchema = external_exports.object({
16029
- ...pluginPresentationShape,
16030
- icon: harnessPluginIconSchema.optional()
16031
- }).strict();
16032
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
16033
- var harnessPluginListResultSchema = external_exports.object({
16034
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16035
- }).strict();
16036
- var harnessPluginConfigurationSchema = external_exports.object({
16037
- version: external_exports.literal(1),
16038
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16039
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16040
- message: "Enabled plugin IDs must be unique",
16041
- path: ["enabled"]
16042
- });
16043
-
16044
15988
  // ../../shared-contracts/dist/harness-preferences.js
16045
15989
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
16046
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15990
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
16047
15991
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
16048
15992
  model: harnessModelRefSchema.optional(),
16049
15993
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
16050
15994
  permissionModeId: harnessPermissionModeIdSchema.optional()
16051
15995
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
16052
15996
  var newThreadDefaultsSchema = external_exports.strictObject({
16053
- lastHarness: installedHarnessPluginIdSchema.optional(),
15997
+ lastHarness: harnessIdSchema.optional(),
16054
15998
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
16055
15999
  });
16056
16000
  var modelId = external_exports.string().min(1).max(1024);
@@ -16071,19 +16015,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
16071
16015
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
16072
16016
  external_exports.strictObject({
16073
16017
  kind: external_exports.literal("favorite"),
16074
- harnessId: installedHarnessPluginIdSchema,
16018
+ harnessId: harnessIdSchema,
16075
16019
  modelId,
16076
16020
  enabled: external_exports.boolean()
16077
16021
  }),
16078
16022
  external_exports.strictObject({
16079
16023
  kind: external_exports.literal("favorites"),
16080
- harnessId: installedHarnessPluginIdSchema,
16024
+ harnessId: harnessIdSchema,
16081
16025
  modelIds: external_exports.array(modelId).max(2048)
16082
16026
  }),
16083
16027
  external_exports.strictObject({
16084
16028
  kind: external_exports.literal("newThread"),
16085
- lastHarness: installedHarnessPluginIdSchema.optional(),
16086
- harnessId: installedHarnessPluginIdSchema.optional(),
16029
+ lastHarness: harnessIdSchema.optional(),
16030
+ harnessId: harnessIdSchema.optional(),
16087
16031
  configuration: harnessDefaultConfigurationSchema.optional()
16088
16032
  })
16089
16033
  ]);
@@ -16099,12 +16043,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16099
16043
  code: "custom",
16100
16044
  message: "A default Harness or complete configuration is required"
16101
16045
  });
16102
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16103
- if (harnessId === "codex")
16104
- ctx.addIssue({
16105
- code: "custom",
16106
- message: "Official Codex is not an external Harness"
16107
- });
16108
16046
  }
16109
16047
  });
16110
16048
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16481,6 +16419,76 @@ var harnessAccountListResultSchema = external_exports.object({
16481
16419
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16482
16420
  }).strict();
16483
16421
 
16422
+ // ../../shared-contracts/dist/harness-plugins.js
16423
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16424
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16425
+ var HARNESS_PLUGIN_LIMIT = 128;
16426
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16427
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16428
+ 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");
16429
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16430
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16431
+ var harnessInstallationGuideSchema = external_exports.object({
16432
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16433
+ before: localizedTextSchema.optional(),
16434
+ after: localizedTextSchema.optional(),
16435
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16436
+ }).strict();
16437
+ var pluginPresentationShape = {
16438
+ id: installedHarnessPluginIdSchema,
16439
+ name: external_exports.string().trim().min(1).max(128),
16440
+ version: external_exports.string().min(1).max(128),
16441
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16442
+ kind: external_exports.literal("usage").optional(),
16443
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16444
+ iconStyle: external_exports.object({
16445
+ vector: external_exports.object({
16446
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16447
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16448
+ paths: external_exports.array(external_exports.object({
16449
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16450
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16451
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16452
+ }).strict()).min(1).max(32)
16453
+ }).strict().optional(),
16454
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16455
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16456
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16457
+ }).strict().optional(),
16458
+ installation: harnessInstallationGuideSchema.optional(),
16459
+ notice: localizedTextSchema.optional(),
16460
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16461
+ launchCommand: external_exports.literal(true).optional(),
16462
+ links: external_exports.object({
16463
+ website: documentationUrlSchema.optional(),
16464
+ documentation: documentationUrlSchema.optional(),
16465
+ installation: documentationUrlSchema.optional()
16466
+ }).strict().optional()
16467
+ };
16468
+ var harnessPluginManifestSchema = external_exports.object({
16469
+ manifestVersion: external_exports.literal(1),
16470
+ ...pluginPresentationShape,
16471
+ adapterApiVersion: external_exports.number().int().positive(),
16472
+ entry: relativeResourceSchema,
16473
+ icon: relativeResourceSchema.optional()
16474
+ }).strict();
16475
+ 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);
16476
+ var harnessPluginDescriptorSchema = external_exports.object({
16477
+ ...pluginPresentationShape,
16478
+ icon: harnessPluginIconSchema.optional()
16479
+ }).strict();
16480
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16481
+ var harnessPluginListResultSchema = external_exports.object({
16482
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16483
+ }).strict();
16484
+ var harnessPluginConfigurationSchema = external_exports.object({
16485
+ version: external_exports.literal(1),
16486
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16487
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16488
+ message: "Enabled plugin IDs must be unique",
16489
+ path: ["enabled"]
16490
+ });
16491
+
16484
16492
  // ../../shared-contracts/dist/harness-route.js
16485
16493
  var harnessPluginRouteSchema = external_exports.object({
16486
16494
  harnessId: harnessPluginIdSchema,
@@ -16674,6 +16682,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16674
16682
  }).strict();
16675
16683
  var harnessCommandCatalogSchema = external_exports.object({
16676
16684
  commands: external_exports.array(harnessCommandDescriptorSchema),
16685
+ /** Partial discovery failures; valid commands remain available. */
16686
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16677
16687
  /**
16678
16688
  * `live` when the catalog includes what a native Session reports for its
16679
16689
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16709,7 +16719,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16709
16719
  }).strict();
16710
16720
  var threadCommandExecuteResultSchema = external_exports.object({
16711
16721
  accepted: external_exports.literal(true),
16712
- turnId: hostTurnIdSchema
16722
+ turnId: hostTurnIdSchema.optional()
16713
16723
  }).strict();
16714
16724
 
16715
16725
  // ../../shared-contracts/dist/json-rpc.js
@@ -14962,7 +14962,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14962
14962
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14963
14963
  message: "Value must not be empty or whitespace"
14964
14964
  });
14965
- 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();
14965
+ 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();
14966
14966
  var harnessPermissionModeSchema = external_exports.object({
14967
14967
  id: harnessPermissionModeIdSchema,
14968
14968
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15346,7 +15346,12 @@ var threadInspectionParamsSchema = external_exports.object({
15346
15346
  }).strict();
15347
15347
  var codexThreadInspectionSchema = external_exports.object({
15348
15348
  owner: external_exports.literal("codex"),
15349
- locked: external_exports.literal(true),
15349
+ locked: external_exports.boolean(),
15350
+ effectiveModel: harnessModelRefSchema.optional(),
15351
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15352
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15353
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15354
+ history: harnessHistoryCapabilitiesSchema.optional(),
15350
15355
  supportsThreadReferences: external_exports.literal(true).optional()
15351
15356
  }).strict();
15352
15357
  var externalThreadInspectionSchema = external_exports.object({
@@ -15568,7 +15573,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15568
15573
  thread: external_exports.object({
15569
15574
  id: external_exports.string().min(1),
15570
15575
  cwd: external_exports.string(),
15571
- modelProvider: external_exports.literal("codexhost"),
15576
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15577
+ modelProvider: external_exports.string().min(1),
15572
15578
  createdAt: external_exports.number(),
15573
15579
  updatedAt: external_exports.number(),
15574
15580
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15582,6 +15588,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15582
15588
  nextCursor: external_exports.string().nullable()
15583
15589
  }),
15584
15590
  configuration: external_exports.object({
15591
+ /** Native Codex model names are not external Harness transport refs. */
15592
+ native: external_exports.object({
15593
+ model: external_exports.string().min(1).max(1024).optional(),
15594
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15595
+ }).optional(),
15585
15596
  effectiveModel: harnessModelRefSchema.optional(),
15586
15597
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15587
15598
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15608,6 +15619,16 @@ var clientChannelResponseSchema = external_exports.object({
15608
15619
  result: record2
15609
15620
  });
15610
15621
 
15622
+ // ../../shared-contracts/dist/thread-catalog.js
15623
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15624
+ var threadCatalogReadResultSchema = external_exports.object({
15625
+ threads: external_exports.array(jsonObjectSchema),
15626
+ ownership: external_exports.array(threadOwnershipSchema),
15627
+ /** Known archived IDs, including visible local external records even when their rows are
15628
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15629
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15630
+ }).strict();
15631
+
15611
15632
  // ../../shared-contracts/dist/voice.js
15612
15633
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15613
15634
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15823,93 +15844,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15823
15844
  timeoutMinutes: 30
15824
15845
  });
15825
15846
 
15826
- // ../../shared-contracts/dist/harness-plugins.js
15827
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15828
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15829
- var HARNESS_PLUGIN_LIMIT = 128;
15830
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15831
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15832
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15833
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15834
- 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");
15835
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15836
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15837
- var harnessInstallationGuideSchema = external_exports.object({
15838
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15839
- before: localizedTextSchema.optional(),
15840
- after: localizedTextSchema.optional(),
15841
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15842
- }).strict();
15843
- var pluginPresentationShape = {
15844
- id: installedHarnessPluginIdSchema,
15845
- name: external_exports.string().trim().min(1).max(128),
15846
- version: external_exports.string().min(1).max(128),
15847
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15848
- kind: external_exports.literal("usage").optional(),
15849
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15850
- iconStyle: external_exports.object({
15851
- vector: external_exports.object({
15852
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15853
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15854
- paths: external_exports.array(external_exports.object({
15855
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15856
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15857
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15858
- }).strict()).min(1).max(32)
15859
- }).strict().optional(),
15860
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15861
- borderRadius: external_exports.number().min(0).max(50).optional(),
15862
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15863
- }).strict().optional(),
15864
- installation: harnessInstallationGuideSchema.optional(),
15865
- notice: localizedTextSchema.optional(),
15866
- /** The factory accepts a persisted local entrypoint through its construction context. */
15867
- launchCommand: external_exports.literal(true).optional(),
15868
- links: external_exports.object({
15869
- website: documentationUrlSchema.optional(),
15870
- documentation: documentationUrlSchema.optional(),
15871
- installation: documentationUrlSchema.optional()
15872
- }).strict().optional()
15873
- };
15874
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15875
- message: "Plugin surfaces must be unique"
15876
- });
15877
- var harnessPluginManifestSchema = external_exports.object({
15878
- manifestVersion: external_exports.literal(1),
15879
- ...pluginPresentationShape,
15880
- adapterApiVersion: external_exports.number().int().positive(),
15881
- entry: relativeResourceSchema,
15882
- icon: relativeResourceSchema.optional(),
15883
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15884
- surfaces: harnessPluginSurfacesSchema.optional()
15885
- }).strict();
15886
- 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);
15887
- var harnessPluginDescriptorSchema = external_exports.object({
15888
- ...pluginPresentationShape,
15889
- icon: harnessPluginIconSchema.optional()
15890
- }).strict();
15891
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15892
- var harnessPluginListResultSchema = external_exports.object({
15893
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15894
- }).strict();
15895
- var harnessPluginConfigurationSchema = external_exports.object({
15896
- version: external_exports.literal(1),
15897
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15898
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15899
- message: "Enabled plugin IDs must be unique",
15900
- path: ["enabled"]
15901
- });
15902
-
15903
15847
  // ../../shared-contracts/dist/harness-preferences.js
15904
15848
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15905
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15849
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15906
15850
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15907
15851
  model: harnessModelRefSchema.optional(),
15908
15852
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15909
15853
  permissionModeId: harnessPermissionModeIdSchema.optional()
15910
15854
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15911
15855
  var newThreadDefaultsSchema = external_exports.strictObject({
15912
- lastHarness: installedHarnessPluginIdSchema.optional(),
15856
+ lastHarness: harnessIdSchema.optional(),
15913
15857
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15914
15858
  });
15915
15859
  var modelId = external_exports.string().min(1).max(1024);
@@ -15930,19 +15874,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15930
15874
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15931
15875
  external_exports.strictObject({
15932
15876
  kind: external_exports.literal("favorite"),
15933
- harnessId: installedHarnessPluginIdSchema,
15877
+ harnessId: harnessIdSchema,
15934
15878
  modelId,
15935
15879
  enabled: external_exports.boolean()
15936
15880
  }),
15937
15881
  external_exports.strictObject({
15938
15882
  kind: external_exports.literal("favorites"),
15939
- harnessId: installedHarnessPluginIdSchema,
15883
+ harnessId: harnessIdSchema,
15940
15884
  modelIds: external_exports.array(modelId).max(2048)
15941
15885
  }),
15942
15886
  external_exports.strictObject({
15943
15887
  kind: external_exports.literal("newThread"),
15944
- lastHarness: installedHarnessPluginIdSchema.optional(),
15945
- harnessId: installedHarnessPluginIdSchema.optional(),
15888
+ lastHarness: harnessIdSchema.optional(),
15889
+ harnessId: harnessIdSchema.optional(),
15946
15890
  configuration: harnessDefaultConfigurationSchema.optional()
15947
15891
  })
15948
15892
  ]);
@@ -15958,12 +15902,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15958
15902
  code: "custom",
15959
15903
  message: "A default Harness or complete configuration is required"
15960
15904
  });
15961
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15962
- if (harnessId === "codex")
15963
- ctx.addIssue({
15964
- code: "custom",
15965
- message: "Official Codex is not an external Harness"
15966
- });
15967
15905
  }
15968
15906
  });
15969
15907
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16340,6 +16278,76 @@ var harnessAccountListResultSchema = external_exports.object({
16340
16278
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16341
16279
  }).strict();
16342
16280
 
16281
+ // ../../shared-contracts/dist/harness-plugins.js
16282
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16283
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16284
+ var HARNESS_PLUGIN_LIMIT = 128;
16285
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16286
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16287
+ 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");
16288
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16289
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16290
+ var harnessInstallationGuideSchema = external_exports.object({
16291
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16292
+ before: localizedTextSchema.optional(),
16293
+ after: localizedTextSchema.optional(),
16294
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16295
+ }).strict();
16296
+ var pluginPresentationShape = {
16297
+ id: installedHarnessPluginIdSchema,
16298
+ name: external_exports.string().trim().min(1).max(128),
16299
+ version: external_exports.string().min(1).max(128),
16300
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16301
+ kind: external_exports.literal("usage").optional(),
16302
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16303
+ iconStyle: external_exports.object({
16304
+ vector: external_exports.object({
16305
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16306
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16307
+ paths: external_exports.array(external_exports.object({
16308
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16309
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16310
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16311
+ }).strict()).min(1).max(32)
16312
+ }).strict().optional(),
16313
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16314
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16315
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16316
+ }).strict().optional(),
16317
+ installation: harnessInstallationGuideSchema.optional(),
16318
+ notice: localizedTextSchema.optional(),
16319
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16320
+ launchCommand: external_exports.literal(true).optional(),
16321
+ links: external_exports.object({
16322
+ website: documentationUrlSchema.optional(),
16323
+ documentation: documentationUrlSchema.optional(),
16324
+ installation: documentationUrlSchema.optional()
16325
+ }).strict().optional()
16326
+ };
16327
+ var harnessPluginManifestSchema = external_exports.object({
16328
+ manifestVersion: external_exports.literal(1),
16329
+ ...pluginPresentationShape,
16330
+ adapterApiVersion: external_exports.number().int().positive(),
16331
+ entry: relativeResourceSchema,
16332
+ icon: relativeResourceSchema.optional()
16333
+ }).strict();
16334
+ 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);
16335
+ var harnessPluginDescriptorSchema = external_exports.object({
16336
+ ...pluginPresentationShape,
16337
+ icon: harnessPluginIconSchema.optional()
16338
+ }).strict();
16339
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16340
+ var harnessPluginListResultSchema = external_exports.object({
16341
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16342
+ }).strict();
16343
+ var harnessPluginConfigurationSchema = external_exports.object({
16344
+ version: external_exports.literal(1),
16345
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16346
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16347
+ message: "Enabled plugin IDs must be unique",
16348
+ path: ["enabled"]
16349
+ });
16350
+
16343
16351
  // ../../shared-contracts/dist/harness-route.js
16344
16352
  var harnessPluginRouteSchema = external_exports.object({
16345
16353
  harnessId: harnessPluginIdSchema,
@@ -16533,6 +16541,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16533
16541
  }).strict();
16534
16542
  var harnessCommandCatalogSchema = external_exports.object({
16535
16543
  commands: external_exports.array(harnessCommandDescriptorSchema),
16544
+ /** Partial discovery failures; valid commands remain available. */
16545
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16536
16546
  /**
16537
16547
  * `live` when the catalog includes what a native Session reports for its
16538
16548
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16568,7 +16578,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16568
16578
  }).strict();
16569
16579
  var threadCommandExecuteResultSchema = external_exports.object({
16570
16580
  accepted: external_exports.literal(true),
16571
- turnId: hostTurnIdSchema
16581
+ turnId: hostTurnIdSchema.optional()
16572
16582
  }).strict();
16573
16583
 
16574
16584
  // ../../shared-contracts/dist/json-rpc.js