Skip to content

Commit f59a5d2

Browse files
Merge branch 'main' into fix/task-poll-after-disconnect
2 parents 7565acf + 49e92e8 commit f59a5d2

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 `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.
@@ -500,19 +500,29 @@ sequenceDiagram
500500
participant S as Server (Receiver)
501501
Note over C,S: 1. Task Creation
502502
C->>S: Request with task field (ttl)
503+
activate S
503504
S->>C: CreateTaskResult (taskId, status: working, ttl, pollInterval)
505+
deactivate S
504506
Note over C,S: 2. Task Polling
505507
C->>S: tasks/get (taskId)
508+
activate S
506509
S->>C: working
510+
deactivate S
507511
Note over S: Task processing continues...
508512
C->>S: tasks/get (taskId)
513+
activate S
509514
S->>C: working
515+
deactivate S
510516
Note over S: Task completes
511517
C->>S: tasks/get (taskId)
518+
activate S
512519
S->>C: completed
520+
deactivate S
513521
Note over C,S: 3. Result Retrieval
514522
C->>S: tasks/result (taskId)
523+
activate S
515524
S->>C: Result content
525+
deactivate S
516526
Note over C,S: 4. Cleanup
517527
Note over S: After ttl period from creation, task is cleaned up
518528
```
@@ -531,44 +541,61 @@ sequenceDiagram
531541
532542
Note over C,S: Client augments with task
533543
C->>S: tools/call (ttl: 3600000)
544+
activate S
534545
S->>C: CreateTaskResult (task-123, status: working)
546+
deactivate S
535547
536548
Note over LLM,C: Client continues processing other requests<br/>while task executes in background
537549
LLM->>C: Request other operation
538550
C->>LLM: Other operation result
539551
540552
Note over C,S: Client polls for status
541553
C->>S: tasks/get (task-123)
554+
activate S
542555
S->>C: working
556+
deactivate S
543557
544558
Note over S: Server needs information from client<br/>Task moves to input_required
545559
546560
Note over C,S: Client polls and discovers input_required
547561
C->>S: tasks/get (task-123)
562+
activate S
548563
S->>C: input_required
564+
deactivate S
549565
550-
Note over C,S: Client receives input requests
566+
Note over C,S: Client opens result stream
551567
C->>S: tasks/result (task-123)
552-
S->>C: elicitation/create (task-123)
568+
activate S
569+
S->>C: elicitation/create (related-task: task-123)
570+
activate C
553571
C->>U: Prompt user for input
554572
U->>C: Provide information
555-
C->>S: elicitation response (task-123)
573+
C->>S: elicitation response (related-task: task-123)
574+
deactivate C
575+
deactivate S
576+
577+
Note over C,S: Client closes result stream and resumes polling
556578
557579
Note over S: Task continues processing...<br/>Task moves back to working
558580
559-
Note over C,S: Client polls again
560581
C->>S: tasks/get (task-123)
582+
activate S
561583
S->>C: working
584+
deactivate S
562585
563586
Note over S: Task completes
564587
565588
Note over C,S: Client polls and discovers completion
566589
C->>S: tasks/get (task-123)
590+
activate S
567591
S->>C: completed
592+
deactivate S
568593
569594
Note over C,S: Client retrieves final results
570595
C->>S: tasks/result (task-123)
596+
activate S
571597
S->>C: Result content
598+
deactivate S
572599
C->>LLM: Process result
573600
574601
Note over S: Results retained for ttl period from creation
@@ -587,13 +614,17 @@ sequenceDiagram
587614
588615
Note over S,C: Server requests client operation (task-augmented)
589616
S->>C: sampling/createMessage (ttl: 3600000)
617+
activate C
590618
C->>S: CreateTaskResult (request-789, status: working)
619+
deactivate C
591620
592621
Note over S: Server continues processing<br/>while waiting for result
593622
594623
Note over S,C: Server polls for result
595624
S->>C: tasks/get (request-789)
625+
activate C
596626
C->>S: working
627+
deactivate C
597628
598629
Note over C,U: Client may present request to user
599630
C->>U: Review request
@@ -609,11 +640,15 @@ sequenceDiagram
609640
610641
Note over S,C: Server polls and discovers completion
611642
S->>C: tasks/get (request-789)
643+
activate C
612644
C->>S: completed
645+
deactivate C
613646
614647
Note over S,C: Server retrieves result
615648
S->>C: tasks/result (request-789)
649+
activate C
616650
C->>S: Result content
651+
deactivate C
617652
618653
Note over S: Server continues processing
619654
@@ -629,20 +664,26 @@ sequenceDiagram
629664
630665
Note over C,S: 1. Task Creation
631666
C->>S: tools/call (request ID: 42, ttl: 60000)
667+
activate S
632668
S->>C: CreateTaskResult (task-123, status: working)
669+
deactivate S
633670
634671
Note over C,S: 2. Task Processing
635672
C->>S: tasks/get (task-123)
673+
activate S
636674
S->>C: working
675+
deactivate S
637676
638677
Note over C,S: 3. Client Cancellation
639678
Note over C: User requests cancellation
640679
C->>S: tasks/cancel (taskId: task-123)
680+
activate S
641681
642682
Note over S: Server stops execution (best effort)
643683
Note over S: Task moves to cancelled status
644684
645685
S->>C: Task (status: cancelled)
686+
deactivate S
646687
647688
Note over C: Client receives confirmation
648689

0 commit comments

Comments
 (0)