Skip to content

Commit db0df22

Browse files
Merge branch 'main' into chore/task-sse-clarification
2 parents 40fd3f5 + 49e92e8 commit db0df22

4 files changed

Lines changed: 98 additions & 100 deletions

File tree

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 `taskHint` value.
116-
1. If a server's capabilities include `tasks.requests.tools.call: true`, then clients consider the value of `taskHint`, 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 `taskHint` value.
116+
1. If a server's capabilities include `tasks.requests.tools.call`, then clients consider the value of `taskHint`, and handle it accordingly:
117117
1. If `taskHint` 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 `taskHint` is `"optional"`, clients **MAY** invoke the tool as a task or as a normal request.
119119
1. If `taskHint` is `"always"`, clients **SHOULD** invoke the tool as a task. Servers **MAY** return a `-32601` (Method not found) error if a client does not attempt to do so.
@@ -484,19 +484,29 @@ sequenceDiagram
484484
participant S as Server (Receiver)
485485
Note over C,S: 1. Task Creation
486486
C->>S: Request with task field (ttl)
487+
activate S
487488
S->>C: CreateTaskResult (taskId, status: working, ttl, pollInterval)
489+
deactivate S
488490
Note over C,S: 2. Task Polling
489491
C->>S: tasks/get (taskId)
492+
activate S
490493
S->>C: working
494+
deactivate S
491495
Note over S: Task processing continues...
492496
C->>S: tasks/get (taskId)
497+
activate S
493498
S->>C: working
499+
deactivate S
494500
Note over S: Task completes
495501
C->>S: tasks/get (taskId)
502+
activate S
496503
S->>C: completed
504+
deactivate S
497505
Note over C,S: 3. Result Retrieval
498506
C->>S: tasks/result (taskId)
507+
activate S
499508
S->>C: Result content
509+
deactivate S
500510
Note over C,S: 4. Cleanup
501511
Note over S: After ttl period from creation, task is cleaned up
502512
```
@@ -515,44 +525,61 @@ sequenceDiagram
515525
516526
Note over C,S: Client augments with task
517527
C->>S: tools/call (ttl: 3600000)
528+
activate S
518529
S->>C: CreateTaskResult (task-123, status: working)
530+
deactivate S
519531
520532
Note over LLM,C: Client continues processing other requests<br/>while task executes in background
521533
LLM->>C: Request other operation
522534
C->>LLM: Other operation result
523535
524536
Note over C,S: Client polls for status
525537
C->>S: tasks/get (task-123)
538+
activate S
526539
S->>C: working
540+
deactivate S
527541
528542
Note over S: Server needs information from client<br/>Task moves to input_required
529543
530544
Note over C,S: Client polls and discovers input_required
531545
C->>S: tasks/get (task-123)
546+
activate S
532547
S->>C: input_required
548+
deactivate S
533549
534-
Note over C,S: Client receives input requests
550+
Note over C,S: Client opens result stream
535551
C->>S: tasks/result (task-123)
536-
S->>C: elicitation/create (task-123)
552+
activate S
553+
S->>C: elicitation/create (related-task: task-123)
554+
activate C
537555
C->>U: Prompt user for input
538556
U->>C: Provide information
539-
C->>S: elicitation response (task-123)
557+
C->>S: elicitation response (related-task: task-123)
558+
deactivate C
559+
deactivate S
560+
561+
Note over C,S: Client closes result stream and resumes polling
540562
541563
Note over S: Task continues processing...<br/>Task moves back to working
542564
543-
Note over C,S: Client polls again
544565
C->>S: tasks/get (task-123)
566+
activate S
545567
S->>C: working
568+
deactivate S
546569
547570
Note over S: Task completes
548571
549572
Note over C,S: Client polls and discovers completion
550573
C->>S: tasks/get (task-123)
574+
activate S
551575
S->>C: completed
576+
deactivate S
552577
553578
Note over C,S: Client retrieves final results
554579
C->>S: tasks/result (task-123)
580+
activate S
555581
S->>C: Result content
582+
deactivate S
556583
C->>LLM: Process result
557584
558585
Note over S: Results retained for ttl period from creation
@@ -571,13 +598,17 @@ sequenceDiagram
571598
572599
Note over S,C: Server requests client operation (task-augmented)
573600
S->>C: sampling/createMessage (ttl: 3600000)
601+
activate C
574602
C->>S: CreateTaskResult (request-789, status: working)
603+
deactivate C
575604
576605
Note over S: Server continues processing<br/>while waiting for result
577606
578607
Note over S,C: Server polls for result
579608
S->>C: tasks/get (request-789)
609+
activate C
580610
C->>S: working
611+
deactivate C
581612
582613
Note over C,U: Client may present request to user
583614
C->>U: Review request
@@ -593,11 +624,15 @@ sequenceDiagram
593624
594625
Note over S,C: Server polls and discovers completion
595626
S->>C: tasks/get (request-789)
627+
activate C
596628
C->>S: completed
629+
deactivate C
597630
598631
Note over S,C: Server retrieves result
599632
S->>C: tasks/result (request-789)
633+
activate C
600634
C->>S: Result content
635+
deactivate C
601636
602637
Note over S: Server continues processing
603638
@@ -613,20 +648,26 @@ sequenceDiagram
613648
614649
Note over C,S: 1. Task Creation
615650
C->>S: tools/call (request ID: 42, ttl: 60000)
651+
activate S
616652
S->>C: CreateTaskResult (task-123, status: working)
653+
deactivate S
617654
618655
Note over C,S: 2. Task Processing
619656
C->>S: tasks/get (task-123)
657+
activate S
620658
S->>C: working
659+
deactivate S
621660
622661
Note over C,S: 3. Client Cancellation
623662
Note over C: User requests cancellation
624663
C->>S: tasks/cancel (taskId: task-123)
664+
activate S
625665
626666
Note over S: Server stops execution (best effort)
627667
Note over S: Task moves to cancelled status
628668
629669
S->>C: Task (status: cancelled)
670+
deactivate S
630671
631672
Note over C: Client receives confirmation
632673

0 commit comments

Comments
 (0)