packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
Web 会话顶栏原生风格「复制」菜单:会话标题、会话存储目录(home 前缀缩写为 ~)与工作目录,带即时的复制成功/失败反馈。
English | 中文
Copy the current session's title, storage directory, or working directory from the web session header.
file:// prefix and no percent-encoding; the home prefix is abbreviated to ~, which the shell expands back), resolved by a read-only host route; it is disabled with a stated reason when the session has not been written to disk yet or the storage backend cannot locate it.Copied / Copy failed) with an aria-live announcement. The shared clipboard helper falls back to execCommand when the async Clipboard API is unavailable; rejected writes report failure.Install this plugin as its own DSH bundle:
dsh plugin --profile web add @moon16u/dsh-plugin-session-copy
Restart dsh web once after installing. No manual cordis.patch.yml edits needed — the package carries its own patch.
GET /api/dsh-session-copy/directory?sessionId=<id> — authenticated by the connection
service, read-only, no-store. It resolves the stored log through the JSONL persistence
backend's public resolveCurrentLog(id, signal) and returns
{ok:true, directory} (a plain filesystem path; the home prefix is abbreviated to ~). This API only locates current-format
logs; older log generations cannot be copied through it. An empty resolution does
not distinguish unwritten sessions from unsupported log formats. The route never
reads log contents, flushes, migrates, or takes a write lease. Session IDs are opaque,
non-empty strings; path encoding belongs to the backend. Failures are reported with
fixed codes: 400 invalid_session_id, 404 directory_unavailable, 501 not_supported,
503 persistence_unavailable, 500 resolve_failed.