@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
@@ -15028,7 +15028,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
15028
15028
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
15029
15029
  message: "Value must not be empty or whitespace"
15030
15030
  });
15031
- 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();
15031
+ 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();
15032
15032
  var harnessPermissionModeSchema = external_exports.object({
15033
15033
  id: harnessPermissionModeIdSchema,
15034
15034
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15412,7 +15412,12 @@ var threadInspectionParamsSchema = external_exports.object({
15412
15412
  }).strict();
15413
15413
  var codexThreadInspectionSchema = external_exports.object({
15414
15414
  owner: external_exports.literal("codex"),
15415
- locked: external_exports.literal(true),
15415
+ locked: external_exports.boolean(),
15416
+ effectiveModel: harnessModelRefSchema.optional(),
15417
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15418
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15419
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15420
+ history: harnessHistoryCapabilitiesSchema.optional(),
15416
15421
  supportsThreadReferences: external_exports.literal(true).optional()
15417
15422
  }).strict();
15418
15423
  var externalThreadInspectionSchema = external_exports.object({
@@ -15634,7 +15639,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15634
15639
  thread: external_exports.object({
15635
15640
  id: external_exports.string().min(1),
15636
15641
  cwd: external_exports.string(),
15637
- modelProvider: external_exports.literal("codexhost"),
15642
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15643
+ modelProvider: external_exports.string().min(1),
15638
15644
  createdAt: external_exports.number(),
15639
15645
  updatedAt: external_exports.number(),
15640
15646
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15648,6 +15654,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15648
15654
  nextCursor: external_exports.string().nullable()
15649
15655
  }),
15650
15656
  configuration: external_exports.object({
15657
+ /** Native Codex model names are not external Harness transport refs. */
15658
+ native: external_exports.object({
15659
+ model: external_exports.string().min(1).max(1024).optional(),
15660
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15661
+ }).optional(),
15651
15662
  effectiveModel: harnessModelRefSchema.optional(),
15652
15663
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15653
15664
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15674,6 +15685,16 @@ var clientChannelResponseSchema = external_exports.object({
15674
15685
  result: record2
15675
15686
  });
15676
15687
 
15688
+ // ../../shared-contracts/dist/thread-catalog.js
15689
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15690
+ var threadCatalogReadResultSchema = external_exports.object({
15691
+ threads: external_exports.array(jsonObjectSchema),
15692
+ ownership: external_exports.array(threadOwnershipSchema),
15693
+ /** Known archived IDs, including visible local external records even when their rows are
15694
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15695
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15696
+ }).strict();
15697
+
15677
15698
  // ../../shared-contracts/dist/voice.js
15678
15699
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15679
15700
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15889,93 +15910,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15889
15910
  timeoutMinutes: 30
15890
15911
  });
15891
15912
 
15892
- // ../../shared-contracts/dist/harness-plugins.js
15893
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15894
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15895
- var HARNESS_PLUGIN_LIMIT = 128;
15896
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15897
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15898
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15899
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15900
- 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");
15901
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15902
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15903
- var harnessInstallationGuideSchema = external_exports.object({
15904
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15905
- before: localizedTextSchema.optional(),
15906
- after: localizedTextSchema.optional(),
15907
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15908
- }).strict();
15909
- var pluginPresentationShape = {
15910
- id: installedHarnessPluginIdSchema,
15911
- name: external_exports.string().trim().min(1).max(128),
15912
- version: external_exports.string().min(1).max(128),
15913
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15914
- kind: external_exports.literal("usage").optional(),
15915
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15916
- iconStyle: external_exports.object({
15917
- vector: external_exports.object({
15918
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15919
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15920
- paths: external_exports.array(external_exports.object({
15921
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15922
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15923
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15924
- }).strict()).min(1).max(32)
15925
- }).strict().optional(),
15926
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15927
- borderRadius: external_exports.number().min(0).max(50).optional(),
15928
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15929
- }).strict().optional(),
15930
- installation: harnessInstallationGuideSchema.optional(),
15931
- notice: localizedTextSchema.optional(),
15932
- /** The factory accepts a persisted local entrypoint through its construction context. */
15933
- launchCommand: external_exports.literal(true).optional(),
15934
- links: external_exports.object({
15935
- website: documentationUrlSchema.optional(),
15936
- documentation: documentationUrlSchema.optional(),
15937
- installation: documentationUrlSchema.optional()
15938
- }).strict().optional()
15939
- };
15940
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15941
- message: "Plugin surfaces must be unique"
15942
- });
15943
- var harnessPluginManifestSchema = external_exports.object({
15944
- manifestVersion: external_exports.literal(1),
15945
- ...pluginPresentationShape,
15946
- adapterApiVersion: external_exports.number().int().positive(),
15947
- entry: relativeResourceSchema,
15948
- icon: relativeResourceSchema.optional(),
15949
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15950
- surfaces: harnessPluginSurfacesSchema.optional()
15951
- }).strict();
15952
- 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);
15953
- var harnessPluginDescriptorSchema = external_exports.object({
15954
- ...pluginPresentationShape,
15955
- icon: harnessPluginIconSchema.optional()
15956
- }).strict();
15957
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15958
- var harnessPluginListResultSchema = external_exports.object({
15959
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15960
- }).strict();
15961
- var harnessPluginConfigurationSchema = external_exports.object({
15962
- version: external_exports.literal(1),
15963
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15964
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15965
- message: "Enabled plugin IDs must be unique",
15966
- path: ["enabled"]
15967
- });
15968
-
15969
15913
  // ../../shared-contracts/dist/harness-preferences.js
15970
15914
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15971
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15915
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15972
15916
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15973
15917
  model: harnessModelRefSchema.optional(),
15974
15918
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15975
15919
  permissionModeId: harnessPermissionModeIdSchema.optional()
15976
15920
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15977
15921
  var newThreadDefaultsSchema = external_exports.strictObject({
15978
- lastHarness: installedHarnessPluginIdSchema.optional(),
15922
+ lastHarness: harnessIdSchema.optional(),
15979
15923
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15980
15924
  });
15981
15925
  var modelId = external_exports.string().min(1).max(1024);
@@ -15996,19 +15940,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15996
15940
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15997
15941
  external_exports.strictObject({
15998
15942
  kind: external_exports.literal("favorite"),
15999
- harnessId: installedHarnessPluginIdSchema,
15943
+ harnessId: harnessIdSchema,
16000
15944
  modelId,
16001
15945
  enabled: external_exports.boolean()
16002
15946
  }),
16003
15947
  external_exports.strictObject({
16004
15948
  kind: external_exports.literal("favorites"),
16005
- harnessId: installedHarnessPluginIdSchema,
15949
+ harnessId: harnessIdSchema,
16006
15950
  modelIds: external_exports.array(modelId).max(2048)
16007
15951
  }),
16008
15952
  external_exports.strictObject({
16009
15953
  kind: external_exports.literal("newThread"),
16010
- lastHarness: installedHarnessPluginIdSchema.optional(),
16011
- harnessId: installedHarnessPluginIdSchema.optional(),
15954
+ lastHarness: harnessIdSchema.optional(),
15955
+ harnessId: harnessIdSchema.optional(),
16012
15956
  configuration: harnessDefaultConfigurationSchema.optional()
16013
15957
  })
16014
15958
  ]);
@@ -16024,12 +15968,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
16024
15968
  code: "custom",
16025
15969
  message: "A default Harness or complete configuration is required"
16026
15970
  });
16027
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
16028
- if (harnessId === "codex")
16029
- ctx.addIssue({
16030
- code: "custom",
16031
- message: "Official Codex is not an external Harness"
16032
- });
16033
15971
  }
16034
15972
  });
16035
15973
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16406,6 +16344,76 @@ var harnessAccountListResultSchema = external_exports.object({
16406
16344
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16407
16345
  }).strict();
16408
16346
 
16347
+ // ../../shared-contracts/dist/harness-plugins.js
16348
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16349
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16350
+ var HARNESS_PLUGIN_LIMIT = 128;
16351
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16352
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16353
+ 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");
16354
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16355
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16356
+ var harnessInstallationGuideSchema = external_exports.object({
16357
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16358
+ before: localizedTextSchema.optional(),
16359
+ after: localizedTextSchema.optional(),
16360
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16361
+ }).strict();
16362
+ var pluginPresentationShape = {
16363
+ id: installedHarnessPluginIdSchema,
16364
+ name: external_exports.string().trim().min(1).max(128),
16365
+ version: external_exports.string().min(1).max(128),
16366
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16367
+ kind: external_exports.literal("usage").optional(),
16368
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16369
+ iconStyle: external_exports.object({
16370
+ vector: external_exports.object({
16371
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16372
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16373
+ paths: external_exports.array(external_exports.object({
16374
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16375
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16376
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16377
+ }).strict()).min(1).max(32)
16378
+ }).strict().optional(),
16379
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16380
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16381
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16382
+ }).strict().optional(),
16383
+ installation: harnessInstallationGuideSchema.optional(),
16384
+ notice: localizedTextSchema.optional(),
16385
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16386
+ launchCommand: external_exports.literal(true).optional(),
16387
+ links: external_exports.object({
16388
+ website: documentationUrlSchema.optional(),
16389
+ documentation: documentationUrlSchema.optional(),
16390
+ installation: documentationUrlSchema.optional()
16391
+ }).strict().optional()
16392
+ };
16393
+ var harnessPluginManifestSchema = external_exports.object({
16394
+ manifestVersion: external_exports.literal(1),
16395
+ ...pluginPresentationShape,
16396
+ adapterApiVersion: external_exports.number().int().positive(),
16397
+ entry: relativeResourceSchema,
16398
+ icon: relativeResourceSchema.optional()
16399
+ }).strict();
16400
+ 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);
16401
+ var harnessPluginDescriptorSchema = external_exports.object({
16402
+ ...pluginPresentationShape,
16403
+ icon: harnessPluginIconSchema.optional()
16404
+ }).strict();
16405
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16406
+ var harnessPluginListResultSchema = external_exports.object({
16407
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16408
+ }).strict();
16409
+ var harnessPluginConfigurationSchema = external_exports.object({
16410
+ version: external_exports.literal(1),
16411
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16412
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16413
+ message: "Enabled plugin IDs must be unique",
16414
+ path: ["enabled"]
16415
+ });
16416
+
16409
16417
  // ../../shared-contracts/dist/harness-route.js
16410
16418
  var harnessPluginRouteSchema = external_exports.object({
16411
16419
  harnessId: harnessPluginIdSchema,
@@ -16599,6 +16607,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16599
16607
  }).strict();
16600
16608
  var harnessCommandCatalogSchema = external_exports.object({
16601
16609
  commands: external_exports.array(harnessCommandDescriptorSchema),
16610
+ /** Partial discovery failures; valid commands remain available. */
16611
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16602
16612
  /**
16603
16613
  * `live` when the catalog includes what a native Session reports for its
16604
16614
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16634,7 +16644,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16634
16644
  }).strict();
16635
16645
  var threadCommandExecuteResultSchema = external_exports.object({
16636
16646
  accepted: external_exports.literal(true),
16637
- turnId: hostTurnIdSchema
16647
+ turnId: hostTurnIdSchema.optional()
16638
16648
  }).strict();
16639
16649
 
16640
16650
  // ../../shared-contracts/dist/json-rpc.js
@@ -14622,7 +14622,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14622
14622
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14623
14623
  message: "Value must not be empty or whitespace"
14624
14624
  });
14625
- 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();
14625
+ 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();
14626
14626
  var harnessPermissionModeSchema = external_exports.object({
14627
14627
  id: harnessPermissionModeIdSchema,
14628
14628
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15006,7 +15006,12 @@ var threadInspectionParamsSchema = external_exports.object({
15006
15006
  }).strict();
15007
15007
  var codexThreadInspectionSchema = external_exports.object({
15008
15008
  owner: external_exports.literal("codex"),
15009
- locked: external_exports.literal(true),
15009
+ locked: external_exports.boolean(),
15010
+ effectiveModel: harnessModelRefSchema.optional(),
15011
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15012
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15013
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15014
+ history: harnessHistoryCapabilitiesSchema.optional(),
15010
15015
  supportsThreadReferences: external_exports.literal(true).optional()
15011
15016
  }).strict();
15012
15017
  var externalThreadInspectionSchema = external_exports.object({
@@ -15228,7 +15233,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15228
15233
  thread: external_exports.object({
15229
15234
  id: external_exports.string().min(1),
15230
15235
  cwd: external_exports.string(),
15231
- modelProvider: external_exports.literal("codexhost"),
15236
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15237
+ modelProvider: external_exports.string().min(1),
15232
15238
  createdAt: external_exports.number(),
15233
15239
  updatedAt: external_exports.number(),
15234
15240
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15242,6 +15248,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15242
15248
  nextCursor: external_exports.string().nullable()
15243
15249
  }),
15244
15250
  configuration: external_exports.object({
15251
+ /** Native Codex model names are not external Harness transport refs. */
15252
+ native: external_exports.object({
15253
+ model: external_exports.string().min(1).max(1024).optional(),
15254
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15255
+ }).optional(),
15245
15256
  effectiveModel: harnessModelRefSchema.optional(),
15246
15257
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15247
15258
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15268,6 +15279,16 @@ var clientChannelResponseSchema = external_exports.object({
15268
15279
  result: record2
15269
15280
  });
15270
15281
 
15282
+ // ../../shared-contracts/dist/thread-catalog.js
15283
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15284
+ var threadCatalogReadResultSchema = external_exports.object({
15285
+ threads: external_exports.array(jsonObjectSchema),
15286
+ ownership: external_exports.array(threadOwnershipSchema),
15287
+ /** Known archived IDs, including visible local external records even when their rows are
15288
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15289
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15290
+ }).strict();
15291
+
15271
15292
  // ../../shared-contracts/dist/voice.js
15272
15293
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15273
15294
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15483,93 +15504,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15483
15504
  timeoutMinutes: 30
15484
15505
  });
15485
15506
 
15486
- // ../../shared-contracts/dist/harness-plugins.js
15487
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15488
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15489
- var HARNESS_PLUGIN_LIMIT = 128;
15490
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15491
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15492
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15493
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id2) => id2 !== "codex", "The official Codex identity is reserved");
15494
- 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");
15495
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15496
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15497
- var harnessInstallationGuideSchema = external_exports.object({
15498
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15499
- before: localizedTextSchema.optional(),
15500
- after: localizedTextSchema.optional(),
15501
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15502
- }).strict();
15503
- var pluginPresentationShape = {
15504
- id: installedHarnessPluginIdSchema,
15505
- name: external_exports.string().trim().min(1).max(128),
15506
- version: external_exports.string().min(1).max(128),
15507
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15508
- kind: external_exports.literal("usage").optional(),
15509
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15510
- iconStyle: external_exports.object({
15511
- vector: external_exports.object({
15512
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15513
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15514
- paths: external_exports.array(external_exports.object({
15515
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15516
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15517
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15518
- }).strict()).min(1).max(32)
15519
- }).strict().optional(),
15520
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15521
- borderRadius: external_exports.number().min(0).max(50).optional(),
15522
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15523
- }).strict().optional(),
15524
- installation: harnessInstallationGuideSchema.optional(),
15525
- notice: localizedTextSchema.optional(),
15526
- /** The factory accepts a persisted local entrypoint through its construction context. */
15527
- launchCommand: external_exports.literal(true).optional(),
15528
- links: external_exports.object({
15529
- website: documentationUrlSchema.optional(),
15530
- documentation: documentationUrlSchema.optional(),
15531
- installation: documentationUrlSchema.optional()
15532
- }).strict().optional()
15533
- };
15534
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15535
- message: "Plugin surfaces must be unique"
15536
- });
15537
- var harnessPluginManifestSchema = external_exports.object({
15538
- manifestVersion: external_exports.literal(1),
15539
- ...pluginPresentationShape,
15540
- adapterApiVersion: external_exports.number().int().positive(),
15541
- entry: relativeResourceSchema,
15542
- icon: relativeResourceSchema.optional(),
15543
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15544
- surfaces: harnessPluginSurfacesSchema.optional()
15545
- }).strict();
15546
- 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);
15547
- var harnessPluginDescriptorSchema = external_exports.object({
15548
- ...pluginPresentationShape,
15549
- icon: harnessPluginIconSchema.optional()
15550
- }).strict();
15551
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15552
- var harnessPluginListResultSchema = external_exports.object({
15553
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15554
- }).strict();
15555
- var harnessPluginConfigurationSchema = external_exports.object({
15556
- version: external_exports.literal(1),
15557
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15558
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15559
- message: "Enabled plugin IDs must be unique",
15560
- path: ["enabled"]
15561
- });
15562
-
15563
15507
  // ../../shared-contracts/dist/harness-preferences.js
15564
15508
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15565
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id2) => String(id2));
15509
+ var preferenceHarnessKey = harnessIdSchema.transform((id2) => String(id2));
15566
15510
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15567
15511
  model: harnessModelRefSchema.optional(),
15568
15512
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15569
15513
  permissionModeId: harnessPermissionModeIdSchema.optional()
15570
15514
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15571
15515
  var newThreadDefaultsSchema = external_exports.strictObject({
15572
- lastHarness: installedHarnessPluginIdSchema.optional(),
15516
+ lastHarness: harnessIdSchema.optional(),
15573
15517
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15574
15518
  });
15575
15519
  var modelId = external_exports.string().min(1).max(1024);
@@ -15590,19 +15534,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15590
15534
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15591
15535
  external_exports.strictObject({
15592
15536
  kind: external_exports.literal("favorite"),
15593
- harnessId: installedHarnessPluginIdSchema,
15537
+ harnessId: harnessIdSchema,
15594
15538
  modelId,
15595
15539
  enabled: external_exports.boolean()
15596
15540
  }),
15597
15541
  external_exports.strictObject({
15598
15542
  kind: external_exports.literal("favorites"),
15599
- harnessId: installedHarnessPluginIdSchema,
15543
+ harnessId: harnessIdSchema,
15600
15544
  modelIds: external_exports.array(modelId).max(2048)
15601
15545
  }),
15602
15546
  external_exports.strictObject({
15603
15547
  kind: external_exports.literal("newThread"),
15604
- lastHarness: installedHarnessPluginIdSchema.optional(),
15605
- harnessId: installedHarnessPluginIdSchema.optional(),
15548
+ lastHarness: harnessIdSchema.optional(),
15549
+ harnessId: harnessIdSchema.optional(),
15606
15550
  configuration: harnessDefaultConfigurationSchema.optional()
15607
15551
  })
15608
15552
  ]);
@@ -15618,12 +15562,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15618
15562
  code: "custom",
15619
15563
  message: "A default Harness or complete configuration is required"
15620
15564
  });
15621
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15622
- if (harnessId === "codex")
15623
- ctx.addIssue({
15624
- code: "custom",
15625
- message: "Official Codex is not an external Harness"
15626
- });
15627
15565
  }
15628
15566
  });
15629
15567
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16000,6 +15938,76 @@ var harnessAccountListResultSchema = external_exports.object({
16000
15938
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16001
15939
  }).strict();
16002
15940
 
15941
+ // ../../shared-contracts/dist/harness-plugins.js
15942
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15943
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15944
+ var HARNESS_PLUGIN_LIMIT = 128;
15945
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15946
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id2) => id2 !== "codex", "The official Codex identity is reserved");
15947
+ 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");
15948
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15949
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15950
+ var harnessInstallationGuideSchema = external_exports.object({
15951
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15952
+ before: localizedTextSchema.optional(),
15953
+ after: localizedTextSchema.optional(),
15954
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15955
+ }).strict();
15956
+ var pluginPresentationShape = {
15957
+ id: installedHarnessPluginIdSchema,
15958
+ name: external_exports.string().trim().min(1).max(128),
15959
+ version: external_exports.string().min(1).max(128),
15960
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
15961
+ kind: external_exports.literal("usage").optional(),
15962
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15963
+ iconStyle: external_exports.object({
15964
+ vector: external_exports.object({
15965
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15966
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15967
+ paths: external_exports.array(external_exports.object({
15968
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15969
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15970
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15971
+ }).strict()).min(1).max(32)
15972
+ }).strict().optional(),
15973
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15974
+ borderRadius: external_exports.number().min(0).max(50).optional(),
15975
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
15976
+ }).strict().optional(),
15977
+ installation: harnessInstallationGuideSchema.optional(),
15978
+ notice: localizedTextSchema.optional(),
15979
+ /** The factory accepts a persisted local entrypoint through its construction context. */
15980
+ launchCommand: external_exports.literal(true).optional(),
15981
+ links: external_exports.object({
15982
+ website: documentationUrlSchema.optional(),
15983
+ documentation: documentationUrlSchema.optional(),
15984
+ installation: documentationUrlSchema.optional()
15985
+ }).strict().optional()
15986
+ };
15987
+ var harnessPluginManifestSchema = external_exports.object({
15988
+ manifestVersion: external_exports.literal(1),
15989
+ ...pluginPresentationShape,
15990
+ adapterApiVersion: external_exports.number().int().positive(),
15991
+ entry: relativeResourceSchema,
15992
+ icon: relativeResourceSchema.optional()
15993
+ }).strict();
15994
+ 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);
15995
+ var harnessPluginDescriptorSchema = external_exports.object({
15996
+ ...pluginPresentationShape,
15997
+ icon: harnessPluginIconSchema.optional()
15998
+ }).strict();
15999
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16000
+ var harnessPluginListResultSchema = external_exports.object({
16001
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16002
+ }).strict();
16003
+ var harnessPluginConfigurationSchema = external_exports.object({
16004
+ version: external_exports.literal(1),
16005
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16006
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16007
+ message: "Enabled plugin IDs must be unique",
16008
+ path: ["enabled"]
16009
+ });
16010
+
16003
16011
  // ../../shared-contracts/dist/harness-route.js
16004
16012
  var harnessPluginRouteSchema = external_exports.object({
16005
16013
  harnessId: harnessPluginIdSchema,
@@ -16193,6 +16201,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16193
16201
  }).strict();
16194
16202
  var harnessCommandCatalogSchema = external_exports.object({
16195
16203
  commands: external_exports.array(harnessCommandDescriptorSchema),
16204
+ /** Partial discovery failures; valid commands remain available. */
16205
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16196
16206
  /**
16197
16207
  * `live` when the catalog includes what a native Session reports for its
16198
16208
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16228,7 +16238,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16228
16238
  }).strict();
16229
16239
  var threadCommandExecuteResultSchema = external_exports.object({
16230
16240
  accepted: external_exports.literal(true),
16231
- turnId: hostTurnIdSchema
16241
+ turnId: hostTurnIdSchema.optional()
16232
16242
  }).strict();
16233
16243
 
16234
16244
  // ../../shared-contracts/dist/json-rpc.js