Skip to content

Commit 230f0fc

Browse files
Merge branch 'main' into fix/taskhint
2 parents 6846352 + 49e92e8 commit 230f0fc

File tree

4 files changed

+98
-100
lines changed

4 files changed

+98
-100
lines changed

docs/specification/draft/basic/utilities/tasks.mdx

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ Tool calls are given special consideration for the purpose of task augmentation.
112112

113113
This is to be interpreted as a fine-grained layer in addition to capabilities, following these rules:
114114

115-
1. If a server's capabilities include `tasks.requests.tools.call: false`, then clients **MUST NOT** attempt to use task augmentation on that server's tools, regardless of the `execution.task` value.
116-
1. If a server's capabilities include `tasks.requests.tools.call: true`, then clients consider the value of `execution.task`, and handle it accordingly:
115+
1. If a server's capabilities do not include `tasks.requests.tools.call`, then clients **MUST NOT** attempt to use task augmentation on that server's tools, regardless of the `execution.task` value.
116+
1. If a server's capabilities include `tasks.requests.tools.call`, then clients consider the value of `execution.task`, and handle it accordingly:
117117
1. If `execution.task` is not present or `"never"`, clients **MUST NOT** attempt to invoke the tool as a task. Servers **SHOULD** return a `-32601` (Method not found) error if a client attempts to do so. This is the default behavior.
118118
1. If `execution.task` is `"optional"`, clients **MAY** invoke the tool as a task or as a normal request.
119119
1. If `execution.task` is `"always"`, clients **MUST** invoke the tool as a task. Servers **MUST** return a `-32601` (Method not found) error if a client does not attempt to do so.
@@ -482,19 +482,29 @@ sequenceDiagram
482482
participant S as Server (Receiver)
483483
Note over C,S: 1. Task Creation
484484
C->>S: Request with task field (ttl)
485+
activate S
485486
S->>C: CreateTaskResult (taskId, status: working, ttl, pollInterval)
487+
deactivate S
486488
Note over C,S: 2. Task Polling
487489
C->>S: tasks/get (taskId)
490+
activate S
488491
S->>C: working
492+
deactivate S
489493
Note over S: Task processing continues...
490494
C->>S: tasks/get (taskId)
495+
activate S
491496
S->>C: working
497+
deactivate S
492498
Note over S: Task completes
493499
C->>S: tasks/get (taskId)
500+
activate S
494501
S->>C: completed
502+
deactivate S
495503
Note over C,S: 3. Result Retrieval
496504
C->>S: tasks/result (taskId)
505+
activate S
497506
S->>C: Result content
507+
deactivate S
498508
Note over C,S: 4. Cleanup
499509
Note over S: After ttl period from creation, task is cleaned up
500510
```
@@ -513,44 +523,61 @@ sequenceDiagram
513523
514524
Note over C,S: Client augments with task
515525
C->>S: tools/call (ttl: 3600000)
526+
activate S
516527
S->>C: CreateTaskResult (task-123, status: working)
528+
deactivate S
517529
518530
Note over LLM,C: Client continues processing other requests<br/>while task executes in background
519531
LLM->>C: Request other operation
520532
C->>LLM: Other operation result
521533
522534
Note over C,S: Client polls for status
523535
C->>S: tasks/get (task-123)
536+
activate S
524537
S->>C: working
538+
deactivate S
525539
526540
Note over S: Server needs information from client<br/>Task moves to input_required
527541
528542
Note over C,S: Client polls and discovers input_required
529543
C->>S: tasks/get (task-123)
544+
activate S
530545
S->>C: input_required
546+
deactivate S
531547
532-
Note over C,S: Client receives input requests
548+
Note over C,S: Client opens result stream
533549
C->>S: tasks/result (task-123)
534-
S->>C: elicitation/create (task-123)
550+
activate S
551+
S->>C: elicitation/create (related-task: task-123)
552+
activate C
535553
C->>U: Prompt user for input
536554
U->>C: Provide information
537-
C->>S: elicitation response (task-123)
555+
C->>S: elicitation response (related-task: task-123)
556+
deactivate C
557+
deactivate S
558+
559+
Note over C,S: Client closes result stream and resumes polling
538560
539561
Note over S: Task continues processing...<br/>Task moves back to working
540562
541-
Note over C,S: Client polls again
542563
C->>S: tasks/get (task-123)
564+
activate S
543565
S->>C: working
566+
deactivate S
544567
545568
Note over S: Task completes
546569
547570
Note over C,S: Client polls and discovers completion
548571
C->>S: tasks/get (task-123)
572+
activate S
549573
S->>C: completed
574+
deactivate S
550575
551576
Note over C,S: Client retrieves final results
552577
C->>S: tasks/result (task-123)
578+
activate S
553579
S->>C: Result content
580+
deactivate S
554581
C->>LLM: Process result
555582
556583
Note over S: Results retained for ttl period from creation
@@ -569,13 +596,17 @@ sequenceDiagram
569596
570597
Note over S,C: Server requests client operation (task-augmented)
571598
S->>C: sampling/createMessage (ttl: 3600000)
599+
activate C
572600
C->>S: CreateTaskResult (request-789, status: working)
601+
deactivate C
573602
574603
Note over S: Server continues processing<br/>while waiting for result
575604
576605
Note over S,C: Server polls for result
577606
S->>C: tasks/get (request-789)
607+
activate C
578608
C->>S: working
609+
deactivate C
579610
580611
Note over C,U: Client may present request to user
581612
C->>U: Review request
@@ -591,11 +622,15 @@ sequenceDiagram
591622
592623
Note over S,C: Server polls and discovers completion
593624
S->>C: tasks/get (request-789)
625+
activate C
594626
C->>S: completed
627+
deactivate C
595628
596629
Note over S,C: Server retrieves result
597630
S->>C: tasks/result (request-789)
631+
activate C
598632
C->>S: Result content
633+
deactivate C
599634
600635
Note over S: Server continues processing
601636
@@ -611,20 +646,26 @@ sequenceDiagram
611646
612647
Note over C,S: 1. Task Creation
613648
C->>S: tools/call (request ID: 42, ttl: 60000)
649+
activate S
614650
S->>C: CreateTaskResult (task-123, status: working)
651+
deactivate S
615652
616653
Note over C,S: 2. Task Processing
617654
C->>S: tasks/get (task-123)
655+
activate S
618656
S->>C: working
657+
deactivate S
619658
620659
Note over C,S: 3. Client Cancellation
621660
Note over C: User requests cancellation
622661
C->>S: tasks/cancel (taskId: task-123)
662+
activate S
623663
624664
Note over S: Server stops execution (best effort)
625665
Note over S: Task moves to cancelled status
626666
627667
S->>C: Task (status: cancelled)
668+
deactivate S
628669
629670
Note over C: Client receives confirmation
630671

0 commit comments

Comments
 (0)