mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-15 02:30:49 +08:00
Users were asked to sign in again every ~30 minutes, even while active. Session lifetime - Browser: UDS_SESSION kept its login-time Max-Age and was never re-issued, so the cookie vanished 30 min after login. Re-issue it on use (throttled by slidingInterval). - Desktop: remote.mux WS traffic never passed the HTTP auth middleware, so the idle TTL never slid. assertPrincipalLive now reports activity and slides the session and the account's bridges (throttled). - New setting sessionIdleTimeoutHours (Settings page + config). Default 0 = no automatic sign-out; only a manual sign-out ends a session, so conversations and night-time cron are never cut off. 0.5-168 enables an idle timeout with the 7-day cap. The TTL is read live. - Stores support long TTLs: the absolute cap follows the TTL, older 7-day sessions are lifted on activity, and expiry timers re-arm instead of overflowing setTimeout (~24.8 days). UAC token check - Every 2 hours (and 1 min after start) each QR session's token is checked against icenterapi. A rejected token is only flagged, never a sign-out. Network errors, 5xx and bad JSON keep the previous verdict (the old 6h check revoked all of an account's sessions on any failure, including outages). - GET /uds-auth/session-status (non-sliding) returns alive + tokenValid. The client probes it every minute and on focus: a gone session signs the UI out with a notice; a rejected token opens a refresh QR once. - Scanning in refresh mode writes the new token into every live session of the account and the skill credential cache in place: no new session, no reload. Other accounts are rejected (token_refresh_emp_mismatch). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
82 lines
2 KiB
JSON
82 lines
2 KiB
JSON
{
|
|
"name": "uds-auth",
|
|
"version": "0.3.20",
|
|
"description": "UDS authentication plugin for DeepSeek Harness — trusted single-instance access control (not strong multi-tenant isolation)",
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"bin": {
|
|
"uds-auth-seal-local-admin": "./scripts/seal-local-admin.mjs"
|
|
},
|
|
"exports": {
|
|
".": "./lib/index.js",
|
|
"./client": "./lib/client.js",
|
|
"./config": "./lib/config.js",
|
|
"./i18n": "./lib/i18n.js",
|
|
"./session": "./lib/session/factory.js",
|
|
"./middleware": "./lib/middleware/auth-middleware.js",
|
|
"./api": "./lib/api.js",
|
|
"./context": "./lib/context.js",
|
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
"./package.json": "./package.json"
|
|
},
|
|
"scripts": {
|
|
"bundle:qrcode": "bun run scripts/bundle-qrcode.mjs",
|
|
"prepack": "bun run scripts/bundle-qrcode.mjs && node scripts/generate-sbom.mjs",
|
|
"pack:check": "node scripts/pack-check.mjs",
|
|
"test": "node --test test/**/*.test.js",
|
|
"sbom": "node scripts/generate-sbom.mjs"
|
|
},
|
|
"keywords": [
|
|
"dsh-plugin",
|
|
"dsh",
|
|
"deepseek-harness",
|
|
"authentication",
|
|
"uds",
|
|
"sso",
|
|
"session-management"
|
|
],
|
|
"files": [
|
|
"lib",
|
|
"skills",
|
|
"skill-helpers",
|
|
"scripts/seal-local-admin.mjs",
|
|
"scripts/pack-check.mjs",
|
|
"config.default.yaml",
|
|
"cordis.patch.yml",
|
|
"docs",
|
|
"README.md",
|
|
"README.zh.md",
|
|
"LICENSE"
|
|
],
|
|
"author": "",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": "^22.19.0 || >=24.0.0"
|
|
},
|
|
"dependencies": {},
|
|
"devDependencies": {
|
|
"qrcode": "1.5.4"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "^18.2.0 || ^19.0.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"react": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"dsh": {
|
|
"bundle": {
|
|
"patch": "./cordis.patch.yml"
|
|
},
|
|
"client": {
|
|
"platform": "web",
|
|
"immediately": true,
|
|
"inject": [
|
|
"@deepseek-ai/dsh-client-ui-slots",
|
|
"@deepseek-ai/dsh-client-locale",
|
|
"@deepseek-ai/dsh-client-ui-workspace"
|
|
]
|
|
}
|
|
}
|
|
}
|