You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Carry a core-signed Slack DM binding with delegated credential subjects so trusted dispatch can verify the subject locally before storing it.
This preserves the scheduler's previously verified Slack requester context without adding dispatch-time Slack API lookups.
Refs #449
Co-Authored-By: GPT-5 Codex <codex@openai.com>
timezone: Type.Optional(Type.String({minLength: 1,maxLength: 80,description: "IANA timezone, e.g. 'America/Los_Angeles'. Defaults to the channel's configured timezone."})),
340
+
timezone: Type.Optional(
341
+
Type.String({
342
+
minLength: 1,
343
+
maxLength: 80,
344
+
description:
345
+
"IANA timezone, e.g. 'America/Los_Angeles'. Defaults to the channel's configured timezone.",
346
+
}),
347
+
),
344
348
next_run_at: Type.Optional(
345
349
Type.String({
346
350
minLength: 1,
347
351
description:
348
352
"Exact next run time as an ISO timestamp, computed from the user's requested schedule.",
349
353
}),
350
354
),
351
-
recurrence: Type.Optional(Type.Union([
352
-
Type.Literal("daily"),
353
-
Type.Literal("weekly"),
354
-
Type.Literal("monthly"),
355
-
Type.Literal("yearly"),
356
-
],{description: "Provide only for explicitly repeating schedules; omit for one-time requests like 'in 1 minute', 'tomorrow', or a specific date. Recurring tasks run at most once per day: use daily, weekly, monthly, or yearly only."})),
355
+
recurrence: Type.Optional(
356
+
Type.Union(
357
+
[
358
+
Type.Literal("daily"),
359
+
Type.Literal("weekly"),
360
+
Type.Literal("monthly"),
361
+
Type.Literal("yearly"),
362
+
],
363
+
{
364
+
description:
365
+
"Provide only for explicitly repeating schedules; omit for one-time requests like 'in 1 minute', 'tomorrow', or a specific date. Recurring tasks run at most once per day: use daily, weekly, monthly, or yearly only.",
@@ -450,20 +462,47 @@ export function createSlackScheduleUpdateTaskTool(
450
462
description:
451
463
"Edit, pause, resume, or reschedule an existing Junior scheduled task in the active Slack conversation. Use only task IDs returned for this destination. Do not move scheduled tasks across conversations.",
452
464
inputSchema: Type.Object({
453
-
task_id: Type.String({minLength: 1,description: "ID of the task to update. Must be from this active Slack destination."}),
465
+
task_id: Type.String({
466
+
minLength: 1,
467
+
description:
468
+
"ID of the task to update. Must be from this active Slack destination.",
next_run_at: Type.Optional(Type.String({minLength: 1,description: "Exact ISO timestamp when changing the next run time."})),
473
+
next_run_at: Type.Optional(
474
+
Type.String({
475
+
minLength: 1,
476
+
description: "Exact ISO timestamp when changing the next run time.",
477
+
}),
478
+
),
458
479
recurrence: Type.Optional(
459
-
Type.Union([Type.Literal("daily"),Type.Literal("weekly"),Type.Literal("monthly"),Type.Literal("yearly"),Type.Null()],{description: "Provide only for repeating schedules. Omit for one-time requests. Set to null to convert a recurring task to one-time."}),
480
+
Type.Union(
481
+
[
482
+
Type.Literal("daily"),
483
+
Type.Literal("weekly"),
484
+
Type.Literal("monthly"),
485
+
Type.Literal("yearly"),
486
+
Type.Null(),
487
+
],
488
+
{
489
+
description:
490
+
"Provide only for repeating schedules. Omit for one-time requests. Set to null to convert a recurring task to one-time.",
491
+
},
492
+
),
460
493
),
461
494
status: Type.Optional(
462
-
Type.Union([
463
-
Type.Literal("active"),
464
-
Type.Literal("paused"),
465
-
Type.Literal("blocked"),
466
-
],{description: "Set to active, paused, or blocked to resume, pause, or block the task."}),
495
+
Type.Union(
496
+
[
497
+
Type.Literal("active"),
498
+
Type.Literal("paused"),
499
+
Type.Literal("blocked"),
500
+
],
501
+
{
502
+
description:
503
+
"Set to active, paused, or blocked to resume, pause, or block the task.",
504
+
},
505
+
),
467
506
),
468
507
}),
469
508
execute: async(input)=>{
@@ -540,7 +579,11 @@ export function createSlackScheduleDeleteTaskTool(
540
579
description:
541
580
"Delete one scheduled Junior task from the active Slack conversation. Use only task IDs returned for this destination. Do not delete schedules from threads, other channels, or another user's DM.",
542
581
inputSchema: Type.Object({
543
-
task_id: Type.String({minLength: 1,description: "ID of the task to delete. Must be from this active Slack destination."}),
582
+
task_id: Type.String({
583
+
minLength: 1,
584
+
description:
585
+
"ID of the task to delete. Must be from this active Slack destination.",
@@ -571,7 +614,11 @@ export function createSlackScheduleRunTaskNowTool(
571
614
description:
572
615
"Queue an existing active scheduled Junior task to run as soon as possible, without changing its cadence. Use when the user asks to run an existing scheduled task now. Use only task IDs returned for this destination.",
573
616
inputSchema: Type.Object({
574
-
task_id: Type.String({minLength: 1,description: "ID of the active task to run now. Must be from this active Slack destination."}),
617
+
task_id: Type.String({
618
+
minLength: 1,
619
+
description:
620
+
"ID of the active task to run now. Must be from this active Slack destination.",
0 commit comments