No description
Find a file
oliver feae559fcf Restore cron sidebar UX: sync mode to editor and show orphan jobs.
DOM cron mode and React overlay could desync so the right pane stayed on the workspace chat; unassigned legacy jobs were also filtered out for normal users. Re-sync mode from the sidebar attribute and adopt/show reclaimable orphans again.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 16:39:21 +08:00
docs Isolate scheduled tasks by empNo, aligned with uds-auth workspaces. 2026-09-08 15:49:54 +08:00
lib Restore cron sidebar UX: sync mode to editor and show orphan jobs. 2026-09-08 16:39:21 +08:00
test Restore cron sidebar UX: sync mode to editor and show orphan jobs. 2026-09-08 16:39:21 +08:00
.gitignore Initial commit: scheduled tasks plugin for DeepSeek Harness 2026-08-24 14:16:47 +08:00
cordis.patch.yml Fork dsh-cron-tasks as dsh-ops-cron with DSH/IM delivery. 2026-09-05 21:48:17 +08:00
FORK.md Mirror scheduled-run summaries into the origin effective session. 2026-09-06 12:45:37 +08:00
LICENSE Initial commit: scheduled tasks plugin for DeepSeek Harness 2026-08-24 14:16:47 +08:00
package.json Recognize fallback_admin login for the scheduled-tasks panel. 2026-09-08 11:38:46 +08:00
README.md Isolate scheduled tasks by empNo, aligned with uds-auth workspaces. 2026-09-08 15:49:54 +08:00

dsh-ops-cron

Scheduled-task plugin for DeepSeek Harness (fork of dsh-cron-tasks).

  • Sidebar 定时任务 under New Session
  • Agent tools: cron_create / cron_list / cron_pause / cron_resume / cron_delete
  • Per-job delivery: DSH (new root session) or IM (ctx.dshIm.send)
  • After each fire, mirrors the summary into the origin effective session (creator Web chat or WhatsApp peer binding) so follow-ups share context

See FORK.md for install notes. Do not install upstream @dsh-external/dsh-cron-tasks in the same profile.

Install

dsh plugin --profile web add -w "github:hansjone/dsh-im-ops"
dsh plugin --profile web add -w "github:hansjone/dsh-ops-cron"
# restart dsh web

Multi-user isolation (with uds-auth)

Requires uds-auth in the same profile. Jobs carry ownerEmpNo; visibility matches workspace ACL:

Role Sees
super_admin / fallback_admin All users’ jobs (sidebar groups by empNo folder) and their run sessions
admin / user Only own jobs and runs

Create stamps the logged-in empNo. Legacy jobs without owner migrate to __unassigned__ (super-only). Fire cwd prefers the owner’s provisioned workspace under user-workspaces/<empNo>.

Delivery defaults

Created from Default delivery Effective-session mirror
WhatsApp / IM session im → reuse or auto-create a 投递目标 for that chat (group→group, DM→DM) Live session for that conversationKey (latest binding)
Web / plain DSH session dsh → sidebar history session Creator session pinned as origin.sessionId
Explicit delivery / im_bot_id+im_target_id as specified Same mirror rules when origin / peer can be resolved

You usually do not need to paste botId/targetId when creating from WhatsApp — omit delivery and the job binds to the current chat.

Execution session ≠ effective session. Each fire still opens a fresh root Session for the Agent turn (visible under 定时任务 history). The mirrored notice is what makes the WhatsApp/Web chat you actually use able to continue from the result.

Agent preset

Source Behavior
Explicit agent_preset / sidebar field pinned on the job
WhatsApp / IM create (omit) inherit chat/group override → bot preset → Host default
Sidebar leave empty Host default at each fire

Scheduled runs mount job.agentPreset (or Host default when empty).

License

MIT (upstream MIT retained).