Back to home@hongbaiqi

dsh-model-account-login

Persistent DSH model-account authorization UI for ChatGPT, Claude, and other llm-pi-ai login flows

Stars
0
Language
Created
Sep 3, 2026
Updated
Sep 3, 2026
GitHub repo

Introduction

dsh-model-account-login

Persistent model-account authorization UI for DeepSeek Harness (DSH) — sign in to ChatGPT, Claude, and other llm-pi-ai login flows once, and keep the session alive across restarts.

中文说明见下文 中文

What it does

DSH core ships an authorization seam (@deepseek-ai/dsh-authorization) plus credential storage, but no built-in UI for interactive provider login flows (device codes, external URLs, text/secret/select prompts). This package adds that missing piece:

  • Host half (lib/host.js) — bridges the official authorization service to a package-private JSON-RPC channel (/model-account-login), tracks every login attempt in an AttemptRegistry (notices, prompts, cancellation, settle states), and persists results through credentials / settings.
  • Web Client half (lib/client.js) — registers a Settings → Model Accounts section (settings.section slot). Each login flow renders as a card showing signed-in / route-enabled state with actions: login, re-login, sign-out, enable/disable route. An in-flight attempt expands an inline panel with the shared state machine: notices, external URL, device code, prompts (text / secret / select), submit and cancel.

Install

This is a Cordis composition plugin. Mount it into your DSH host composition with the bundled patch:

# cordis.patch.yml (bundled)
- insert:
    - id: model-account-authorization
      name: '@deepseek-ai/dsh-authorization'
      inject: [credentials]

    - id: model-account-login
      name: 'dsh-model-account-login'
      inject: [authorization, credentials, settings, connection]

The Web Client entry is declared through package.json → dsh.client and joins the Web module graph automatically once the host row is mounted.

Requirements

  • Node.js >= 20
  • A DSH deployment providing these peer services:
    • @deepseek-ai/cordis ^4.0.1
    • @deepseek-ai/dsh-authorization ^0.1.1-rc.2
    • @deepseek-ai/dsh-credentials ^0.1.1-rc.2
    • @deepseek-ai/dsh-settings ^0.1.1-rc.2
    • @deepseek-ai/dsh-client-connection / dsh-client-runtime / dsh-client-ui-settings ^0.1.1-rc.2
    • react ^18.2.0

Repository layout

lib/
  host.js       Host plugin: RPC bridge + attempt lifecycle
  client.js     Web client: settings.section UI (React)
  protocol.js   Shared RPC protocol, view types, validators
  state.js      AttemptRegistry state machine
  *.d.ts        Type declarations for all of the above
cordis.patch.yml  Composition patch for mounting

Note: this repository currently ships the built artifacts of the plugin (compiled JS + type declarations). The TypeScript sources are not yet published; contributions that help reconstruct them are welcome — see AGENTS.md.

Protocol at a glance

Client → Host calls go over the /model-account-login channel as lossless JSON, returning RpcResult<T> ({ ok: true, value } / { ok: false, error }). Key view types (see lib/protocol.d.ts):

  • OverviewView — all known flows, their methods, inFlight / signedIn / routeEnabled flags
  • AttemptView — one login attempt: status (running | authorized | cancelled | failed), notices, current prompt, error
  • PromptViewtext / secret / select prompt descriptions

Credentials are stored under the llm-pi-ai credential scope; settings under the llm-pi-ai namespace.

License

MIT © 2026 hongbaiqi


中文

dsh-model-account-login 是 DeepSeek Harness(DSH)的模型账号登录插件:为 ChatGPT、Claude 等 llm-pi-ai 登录流程提供持久化的授权界面。

  • Host 端:把官方 authorization 服务桥接到包内私有 RPC 通道,管理每次登录尝试的状态机(通知、设备码、交互提示、取消、成败落定),并通过 credentials / settings 持久化登录结果。
  • Web 端:在设置页注册「模型账号」面板,每个登录流程一张卡片,显示已登录 / 路由启用状态,支持登录、重新登录、退出、启停路由;进行中的登录会展开内联面板,展示通知、外部链接、设备码和输入提示。

安装

用随包附带的 cordis.patch.yml 把插件挂进 DSH 的 host 组合(composition)即可,Web 客户端会随模块图自动加载。要求 Node.js >= 20 及上文列出的 peer 依赖。

说明

本仓库当前发布的是编译产物(JS + 类型声明),TypeScript 源码尚未公开,欢迎贡献重建。

许可证:MIT © 2026 hongbaiqi