Skip to content

Add DeepSeek Harness (DSH) as CodexHub's fifth fully supported managed client #430

Description

@NOirBRight

Summary

Add DeepSeek Harness (DSH) as CodexHub's fifth fully supported managed Gateway client.

This is a product-integration issue, not the Beta4.1 protocol-classifier fix. The DSH/Collaboration name-collision regression is tracked in #429 and should be fixed in Beta4.1. This issue has no Beta4.1 delivery requirement.

Initial qualification target:

  • Client: @deepseek-ai/dsh
  • Baseline version: 0.1.0-rc.6
  • Primary config: ~/.dsh/settings.yaml
  • Gateway protocol: OpenAI Responses-compatible
  • Supported preset baseline: DSH Standard

Product outcome

DSH appears alongside the four existing supported clients and receives the same first-class CodexHub lifecycle:

  • detection and version reporting;
  • configuration preview;
  • Apply with truthful result;
  • readback/reconciliation;
  • restore/direct-mode switching;
  • model and credential projection;
  • real-client qualification and documented support status.

A user must not need to hand-edit settings.yaml, restart CodexHub merely to publish configuration, patch the installed DSH package, or replace DSH-owned tools.

Scope

Client detection and support status

  • Detect the dsh executable/package and report the exact installed version.
  • Detect ~/.dsh/settings.yaml using platform-correct home/config resolution.
  • Initially qualify the pinned baseline version; report newer/unknown config or protocol shapes as unqualified/drifted rather than silently claiming support.
  • Add DSH to the UI/client status surface as the fifth client without reordering or regressing existing clients unnecessarily.

Managed configuration

Use the existing managed-client adapter seam and support preview/apply/readback/restore.

CodexHub may own only the fields necessary to route DSH through the local Gateway:

  • local Gateway base URL;
  • local Gateway client key;
  • Responses protocol/provider selection;
  • selected canonical model and any required model mapping.

Requirements:

  • Preserve unrelated YAML, comments/structure where the existing YAML strategy permits, presets, local tools, prompts, and all user-owned settings.
  • Never overwrite DSH upstream credentials or unrelated Provider configuration.
  • Use backup plus atomic write.
  • Detect concurrent/external edits before destructive replacement.
  • Restore at field granularity according to existing ownership rules; do not replace the whole user file with a stale snapshot.
  • Mask local and upstream credentials in preview, logs, telemetry, errors, tests, and readback evidence.
  • Participate in Gateway-key rotation/republication so a successful Apply leaves DSH and the running Gateway on the same credential generation (see Changing the local Gateway client key is not applied transactionally to the running Gateway and managed Codex client #428).

Protocol and tool ownership

  • Route DSH through the normal Responses compatibility path; do not add a Kimi-, model-, User-Agent-, or DSH-specific Gateway routing branch.
  • Treat DSH's subagent, subagent_fork, send_message, interrupt_agent, list_agents, and other tools as DSH-owned.
  • CodexHub must not rename or namespace-wrap those tools, translate DSH agent IDs into Codex task paths, execute them, or synthesize their results.
  • Reuse the generic fix from Fix ordinary DSH tools being misclassified as Codex Collaboration V2 #429 so ordinary DSH tools are not mistaken for Codex Collaboration V2.
  • Preserve ordinary function-call and function-result history across continuation.

UX and documentation

  • Expose detected version, config location, managed/direct state, selected model, last Apply/readback outcome, and actionable drift/errors.
  • Document supported version/preset/protocol boundaries and what CodexHub owns in the YAML.
  • Clearly distinguish the local Gateway client key from Kimi/other upstream Provider API keys.
  • Document reversible switching between direct DSH use and CodexHub-managed Gateway use.

Acceptance criteria

  • DSH is visible as the fifth supported client with accurate installed/version/config status.
  • Preview shows only intended owned-field changes and masks all credentials.
  • One Apply configures a clean pinned DSH installation for the local Gateway without manual YAML editing.
  • Readback proves endpoint, protocol, model, and local key projection match the intended state before reporting success.
  • Unrelated YAML, presets, DSH-owned tools, user credentials, and custom settings survive Apply unchanged.
  • Restore/direct-mode switching removes or restores only CodexHub-owned fields and is reversible.
  • Concurrent modification and version/config drift fail truthfully without clobbering user data.
  • A pinned DSH Standard E2E turn succeeds through one native Responses Provider route with exact route identity and no upstream fallback.
  • An ordinary function call/result continuation succeeds.
  • A DSH subagent/control lifecycle succeeds while DSH remains the executor and owner of its schemas/IDs.
  • Exact Codex Collaboration V1/V2 traffic remains unaffected; DSH's same-named ordinary tools are covered by Fix ordinary DSH tools being misclassified as Codex Collaboration V2 #429 regressions.
  • Gateway client-key rotation republishes and verifies DSH without restarting CodexHub or manually editing DSH.
  • Existing four supported clients retain their current preview/apply/readback/restore behavior.
  • Qualification fixtures/evidence contain no prompts, tool arguments/results, credentials, session IDs, or absolute user paths.

Suggested implementation seams

Release planning

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    campaign:0.1.90.1.9 coexistence provider injection & DSH client campaignenhancementNew feature or requestphase:beta10.1.9 phase: adapter seam + DSH headlessphase:beta20.1.9 phase: DSH E2E qualification + UIready-for-humanRequires human implementation

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions