diff --git a/src/cli/cron-cli/register.cron-add.ts b/src/cli/cron-cli/register.cron-add.ts index 2388b00a388..8d44c77778f 100644 --- a/src/cli/cron-cli/register.cron-add.ts +++ b/src/cli/cron-cli/register.cron-add.ts @@ -71,6 +71,7 @@ export function registerCronAddCommand(cron: Command) { .option("--keep-after-run", "Keep one-shot job after it succeeds", false) .option("--agent ", "Agent id for this job") .option("--session ", "Session target (main|isolated)") + .option("--session-key ", "Session key for job routing (e.g. agent:my-agent:my-session)") .option("--wake ", "Wake mode (now|next-heartbeat)", "now") .option("--at ", "Run once at time (ISO) or +duration (e.g. 20m)") .option("--every ", "Run every duration (e.g. 10m, 1h)") @@ -240,12 +241,18 @@ export function registerCronAddCommand(cron: Command) { ? opts.description.trim() : undefined; + const sessionKey = + typeof opts.sessionKey === "string" && opts.sessionKey.trim() + ? opts.sessionKey.trim() + : undefined; + const params = { name, description, enabled: !opts.disabled, deleteAfterRun: opts.deleteAfterRun ? true : opts.keepAfterRun ? false : undefined, agentId, + sessionKey, schedule, sessionTarget, wakeMode, diff --git a/src/cli/cron-cli/register.cron-edit.ts b/src/cli/cron-cli/register.cron-edit.ts index f1e6c74d77f..9bc9916a06d 100644 --- a/src/cli/cron-cli/register.cron-edit.ts +++ b/src/cli/cron-cli/register.cron-edit.ts @@ -37,6 +37,8 @@ export function registerCronEditCommand(cron: Command) { .option("--session ", "Session target (main|isolated)") .option("--agent ", "Set agent id") .option("--clear-agent", "Unset agent and use default", false) + .option("--session-key ", "Set session key for job routing") + .option("--clear-session-key", "Unset session key", false) .option("--wake ", "Wake mode (now|next-heartbeat)") .option("--at ", "Set one-shot time (ISO) or duration like 20m") .option("--every ", "Set interval duration like 10m") @@ -133,6 +135,15 @@ export function registerCronEditCommand(cron: Command) { if (opts.clearAgent) { patch.agentId = null; } + if (opts.sessionKey && opts.clearSessionKey) { + throw new Error("Use --session-key or --clear-session-key, not both"); + } + if (typeof opts.sessionKey === "string" && opts.sessionKey.trim()) { + patch.sessionKey = opts.sessionKey.trim(); + } + if (opts.clearSessionKey) { + patch.sessionKey = null; + } const scheduleChosen = [opts.at, opts.every, opts.cron].filter(Boolean).length; if (scheduleChosen > 1) {