| .. | ||
| docs | ||
| lib | ||
| scripts | ||
| skill-helpers | ||
| skills/uds-skill-auth | ||
| test | ||
| .gitignore | ||
| config.default.yaml | ||
| cordis.patch.yml | ||
| package-lock.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| README.zh.md | ||
uds-auth
UDS authentication plugin for DeepSeek Harness: fixed sidebar login badge + host session/role APIs.
Install
dsh plugin --profile web add -w "D:/project/chatgpt/oclaw/uds-auth"
Restart Harness after install. The badge mounts on sidebar.footer.action (root scope).
Version 0.2.21 provides ctx.get('udsAuth').runAsHost(callback) for trusted Host plugins. It isolates UDS browser identity during synchronous and asynchronous background operations and restores the caller afterward. Use with dsh-im-ops >= 4.9.1-ops.38 to fix WhatsApp background Session creation rejected as signed out; update both plugins and restart the Host. The callback adds no remote endpoint and preserves browser login and workspace ACL checks.
Config
uacBaseUrl: https://uac.zte.com.cn
userSearchUrl: https://icenterapi.zte.com.cn/zte-km-icenter-addresearch/user/plain/docs/search
loginSystemCode: '100000455558'
originSystemCode: ''
retainSkillCredentialsOnLogout: true
skillCredentialTtlSeconds: 604800
outboundAllowedHosts: icenterapi.zte.com.cn,icentermsg.dt.zte.com.cn
Skill auth standard (Chinese): docs/skill-auth-standard.zh.md.
Bundled skill: skills/uds-skill-auth. Handoff notes: docs/uds-skill-auth.zh.md.
Loopback agent APIs: GET|POST /uds-auth/agent-credentials, POST /uds-auth/outbound.
Local admin unlock (optional, decrypt-to-login)
node scripts/seal-local-admin.mjs "your-passphrase"- Set printed
UDS_AUTH_LOCAL_ADMIN_BOX=...on the Harness process (ciphertext only) - Login panel → “Unlock with local key” → enter passphrase
Env alone does not grant admin. Legacy UDS_AUTH_LOCAL_ADMIN_KEY is ignored.
Layout
| Piece | Path | Role |
|---|---|---|
| Host | lib/index.js |
Cordis apply: settings, RPC, /uds-auth/* |
| Client | lib/client.js |
ModuleLoader + React footer login card |
| Bundle | cordis.patch.yml |
layer insert only |
| Meta | package.json dsh.client |
./client + slots inject |
The login panel uses position: fixed with a measured trigger anchor (same pattern as CordisPanel) so the sidebar overflow clip cannot hide it.
License
MIT