@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
@@ -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((id) => id !== "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((id) => String(id));
15509
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
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((id) => id !== "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
@@ -14808,7 +14808,7 @@ var HARNESS_PERMISSION_MODE_CATALOG_MAX_LENGTH = 32;
14808
14808
  var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
14809
14809
  message: "Value must not be empty or whitespace"
14810
14810
  });
14811
- 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();
14811
+ 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();
14812
14812
  var harnessPermissionModeSchema = external_exports.object({
14813
14813
  id: harnessPermissionModeIdSchema,
14814
14814
  label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
@@ -15192,7 +15192,12 @@ var threadInspectionParamsSchema = external_exports.object({
15192
15192
  }).strict();
15193
15193
  var codexThreadInspectionSchema = external_exports.object({
15194
15194
  owner: external_exports.literal("codex"),
15195
- locked: external_exports.literal(true),
15195
+ locked: external_exports.boolean(),
15196
+ effectiveModel: harnessModelRefSchema.optional(),
15197
+ resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
15198
+ effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15199
+ effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
15200
+ history: harnessHistoryCapabilitiesSchema.optional(),
15196
15201
  supportsThreadReferences: external_exports.literal(true).optional()
15197
15202
  }).strict();
15198
15203
  var externalThreadInspectionSchema = external_exports.object({
@@ -15414,7 +15419,8 @@ var clientThreadSnapshotSchema = external_exports.object({
15414
15419
  thread: external_exports.object({
15415
15420
  id: external_exports.string().min(1),
15416
15421
  cwd: external_exports.string(),
15417
- modelProvider: external_exports.literal("codexhost"),
15422
+ /** External rows use codexhost; native Codex rows retain their official provider. */
15423
+ modelProvider: external_exports.string().min(1),
15418
15424
  createdAt: external_exports.number(),
15419
15425
  updatedAt: external_exports.number(),
15420
15426
  status: external_exports.object({ type: external_exports.string() }).passthrough(),
@@ -15428,6 +15434,11 @@ var clientThreadSnapshotSchema = external_exports.object({
15428
15434
  nextCursor: external_exports.string().nullable()
15429
15435
  }),
15430
15436
  configuration: external_exports.object({
15437
+ /** Native Codex model names are not external Harness transport refs. */
15438
+ native: external_exports.object({
15439
+ model: external_exports.string().min(1).max(1024).optional(),
15440
+ reasoningEffort: external_exports.string().min(1).max(128).optional()
15441
+ }).optional(),
15431
15442
  effectiveModel: harnessModelRefSchema.optional(),
15432
15443
  effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15433
15444
  effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
@@ -15454,6 +15465,16 @@ var clientChannelResponseSchema = external_exports.object({
15454
15465
  result: record3
15455
15466
  });
15456
15467
 
15468
+ // ../../shared-contracts/dist/thread-catalog.js
15469
+ var threadCatalogReadParamsSchema = external_exports.object({ includeArchived: external_exports.boolean().optional() }).strict();
15470
+ var threadCatalogReadResultSchema = external_exports.object({
15471
+ threads: external_exports.array(jsonObjectSchema),
15472
+ ownership: external_exports.array(threadOwnershipSchema),
15473
+ /** Known archived IDs, including visible local external records even when their rows are
15474
+ * excluded. Native archived IDs are complete only when includeArchived is true. */
15475
+ archivedThreadIds: external_exports.array(hostThreadIdSchema)
15476
+ }).strict();
15477
+
15457
15478
  // ../../shared-contracts/dist/voice.js
15458
15479
  var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
15459
15480
  var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
@@ -15669,93 +15690,16 @@ var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
15669
15690
  timeoutMinutes: 30
15670
15691
  });
15671
15692
 
15672
- // ../../shared-contracts/dist/harness-plugins.js
15673
- var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
15674
- var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
15675
- var HARNESS_PLUGIN_LIMIT = 128;
15676
- var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
15677
- var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
15678
- var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
15679
- var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
15680
- 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");
15681
- var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
15682
- var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
15683
- var harnessInstallationGuideSchema = external_exports.object({
15684
- commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
15685
- before: localizedTextSchema.optional(),
15686
- after: localizedTextSchema.optional(),
15687
- downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
15688
- }).strict();
15689
- var pluginPresentationShape = {
15690
- id: installedHarnessPluginIdSchema,
15691
- name: external_exports.string().trim().min(1).max(128),
15692
- version: external_exports.string().min(1).max(128),
15693
- /** Capability-only plugin; omitted for existing session-capable plugins. */
15694
- kind: external_exports.literal("usage").optional(),
15695
- /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
15696
- iconStyle: external_exports.object({
15697
- vector: external_exports.object({
15698
- viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
15699
- color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
15700
- paths: external_exports.array(external_exports.object({
15701
- d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
15702
- fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
15703
- fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
15704
- }).strict()).min(1).max(32)
15705
- }).strict().optional(),
15706
- background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
15707
- borderRadius: external_exports.number().min(0).max(50).optional(),
15708
- paddingRatio: external_exports.number().min(0).max(0.25).optional()
15709
- }).strict().optional(),
15710
- installation: harnessInstallationGuideSchema.optional(),
15711
- notice: localizedTextSchema.optional(),
15712
- /** The factory accepts a persisted local entrypoint through its construction context. */
15713
- launchCommand: external_exports.literal(true).optional(),
15714
- links: external_exports.object({
15715
- website: documentationUrlSchema.optional(),
15716
- documentation: documentationUrlSchema.optional(),
15717
- installation: documentationUrlSchema.optional()
15718
- }).strict().optional()
15719
- };
15720
- var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
15721
- message: "Plugin surfaces must be unique"
15722
- });
15723
- var harnessPluginManifestSchema = external_exports.object({
15724
- manifestVersion: external_exports.literal(1),
15725
- ...pluginPresentationShape,
15726
- adapterApiVersion: external_exports.number().int().positive(),
15727
- entry: relativeResourceSchema,
15728
- icon: relativeResourceSchema.optional(),
15729
- /** Omitted means the plugin appears in every surface; never inferred from its identity. */
15730
- surfaces: harnessPluginSurfacesSchema.optional()
15731
- }).strict();
15732
- 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);
15733
- var harnessPluginDescriptorSchema = external_exports.object({
15734
- ...pluginPresentationShape,
15735
- icon: harnessPluginIconSchema.optional()
15736
- }).strict();
15737
- var harnessPluginListParamsSchema = external_exports.object({}).strict();
15738
- var harnessPluginListResultSchema = external_exports.object({
15739
- plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
15740
- }).strict();
15741
- var harnessPluginConfigurationSchema = external_exports.object({
15742
- version: external_exports.literal(1),
15743
- enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
15744
- }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
15745
- message: "Enabled plugin IDs must be unique",
15746
- path: ["enabled"]
15747
- });
15748
-
15749
15693
  // ../../shared-contracts/dist/harness-preferences.js
15750
15694
  var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
15751
- var preferenceHarnessKey = installedHarnessPluginIdSchema.transform((id) => String(id));
15695
+ var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
15752
15696
  var harnessDefaultConfigurationSchema = external_exports.strictObject({
15753
15697
  model: harnessModelRefSchema.optional(),
15754
15698
  thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
15755
15699
  permissionModeId: harnessPermissionModeIdSchema.optional()
15756
15700
  }).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
15757
15701
  var newThreadDefaultsSchema = external_exports.strictObject({
15758
- lastHarness: installedHarnessPluginIdSchema.optional(),
15702
+ lastHarness: harnessIdSchema.optional(),
15759
15703
  byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
15760
15704
  });
15761
15705
  var modelId = external_exports.string().min(1).max(1024);
@@ -15776,19 +15720,19 @@ var harnessPreferenceOperationSchema = external_exports.discriminatedUnion("kind
15776
15720
  external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
15777
15721
  external_exports.strictObject({
15778
15722
  kind: external_exports.literal("favorite"),
15779
- harnessId: installedHarnessPluginIdSchema,
15723
+ harnessId: harnessIdSchema,
15780
15724
  modelId,
15781
15725
  enabled: external_exports.boolean()
15782
15726
  }),
15783
15727
  external_exports.strictObject({
15784
15728
  kind: external_exports.literal("favorites"),
15785
- harnessId: installedHarnessPluginIdSchema,
15729
+ harnessId: harnessIdSchema,
15786
15730
  modelIds: external_exports.array(modelId).max(2048)
15787
15731
  }),
15788
15732
  external_exports.strictObject({
15789
15733
  kind: external_exports.literal("newThread"),
15790
- lastHarness: installedHarnessPluginIdSchema.optional(),
15791
- harnessId: installedHarnessPluginIdSchema.optional(),
15734
+ lastHarness: harnessIdSchema.optional(),
15735
+ harnessId: harnessIdSchema.optional(),
15792
15736
  configuration: harnessDefaultConfigurationSchema.optional()
15793
15737
  })
15794
15738
  ]);
@@ -15804,12 +15748,6 @@ var harnessPreferencePatchSchema = external_exports.strictObject({
15804
15748
  code: "custom",
15805
15749
  message: "A default Harness or complete configuration is required"
15806
15750
  });
15807
- const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
15808
- if (harnessId === "codex")
15809
- ctx.addIssue({
15810
- code: "custom",
15811
- message: "Official Codex is not an external Harness"
15812
- });
15813
15751
  }
15814
15752
  });
15815
15753
  var harnessPreferencesDocumentSchema = external_exports.strictObject({
@@ -16186,6 +16124,76 @@ var harnessAccountListResultSchema = external_exports.object({
16186
16124
  accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
16187
16125
  }).strict();
16188
16126
 
16127
+ // ../../shared-contracts/dist/harness-plugins.js
16128
+ var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
16129
+ var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
16130
+ var HARNESS_PLUGIN_LIMIT = 128;
16131
+ var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
16132
+ var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
16133
+ 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");
16134
+ var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
16135
+ var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
16136
+ var harnessInstallationGuideSchema = external_exports.object({
16137
+ commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
16138
+ before: localizedTextSchema.optional(),
16139
+ after: localizedTextSchema.optional(),
16140
+ downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
16141
+ }).strict();
16142
+ var pluginPresentationShape = {
16143
+ id: installedHarnessPluginIdSchema,
16144
+ name: external_exports.string().trim().min(1).max(128),
16145
+ version: external_exports.string().min(1).max(128),
16146
+ /** Capability-only plugin; omitted for existing session-capable plugins. */
16147
+ kind: external_exports.literal("usage").optional(),
16148
+ /** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
16149
+ iconStyle: external_exports.object({
16150
+ vector: external_exports.object({
16151
+ viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
16152
+ color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
16153
+ paths: external_exports.array(external_exports.object({
16154
+ d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
16155
+ fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
16156
+ fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
16157
+ }).strict()).min(1).max(32)
16158
+ }).strict().optional(),
16159
+ background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
16160
+ borderRadius: external_exports.number().min(0).max(50).optional(),
16161
+ paddingRatio: external_exports.number().min(0).max(0.25).optional()
16162
+ }).strict().optional(),
16163
+ installation: harnessInstallationGuideSchema.optional(),
16164
+ notice: localizedTextSchema.optional(),
16165
+ /** The factory accepts a persisted local entrypoint through its construction context. */
16166
+ launchCommand: external_exports.literal(true).optional(),
16167
+ links: external_exports.object({
16168
+ website: documentationUrlSchema.optional(),
16169
+ documentation: documentationUrlSchema.optional(),
16170
+ installation: documentationUrlSchema.optional()
16171
+ }).strict().optional()
16172
+ };
16173
+ var harnessPluginManifestSchema = external_exports.object({
16174
+ manifestVersion: external_exports.literal(1),
16175
+ ...pluginPresentationShape,
16176
+ adapterApiVersion: external_exports.number().int().positive(),
16177
+ entry: relativeResourceSchema,
16178
+ icon: relativeResourceSchema.optional()
16179
+ }).strict();
16180
+ 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);
16181
+ var harnessPluginDescriptorSchema = external_exports.object({
16182
+ ...pluginPresentationShape,
16183
+ icon: harnessPluginIconSchema.optional()
16184
+ }).strict();
16185
+ var harnessPluginListParamsSchema = external_exports.object({}).strict();
16186
+ var harnessPluginListResultSchema = external_exports.object({
16187
+ plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
16188
+ }).strict();
16189
+ var harnessPluginConfigurationSchema = external_exports.object({
16190
+ version: external_exports.literal(1),
16191
+ enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
16192
+ }).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
16193
+ message: "Enabled plugin IDs must be unique",
16194
+ path: ["enabled"]
16195
+ });
16196
+
16189
16197
  // ../../shared-contracts/dist/harness-route.js
16190
16198
  var harnessPluginRouteSchema = external_exports.object({
16191
16199
  harnessId: harnessPluginIdSchema,
@@ -16379,6 +16387,8 @@ var harnessCommandDescriptorSchema = external_exports.object({
16379
16387
  }).strict();
16380
16388
  var harnessCommandCatalogSchema = external_exports.object({
16381
16389
  commands: external_exports.array(harnessCommandDescriptorSchema),
16390
+ /** Partial discovery failures; valid commands remain available. */
16391
+ warnings: external_exports.array(external_exports.string().min(1)).optional(),
16382
16392
  /**
16383
16393
  * `live` when the catalog includes what a native Session reports for its
16384
16394
  * workspace (custom commands, skills); `static` for Adapter built-ins only.
@@ -16414,7 +16424,7 @@ var threadCommandExecuteParamsSchema = external_exports.object({
16414
16424
  }).strict();
16415
16425
  var threadCommandExecuteResultSchema = external_exports.object({
16416
16426
  accepted: external_exports.literal(true),
16417
- turnId: hostTurnIdSchema
16427
+ turnId: hostTurnIdSchema.optional()
16418
16428
  }).strict();
16419
16429
 
16420
16430
  // ../../shared-contracts/dist/json-rpc.js