Class McpTask.Builder
java.lang.Object
com.soklet.McpTask.Builder
- Enclosing class:
McpTask
Mutable builder for an immutable task snapshot.
The builder is intended for use by a single thread. Its
status-specific setters do not silently change the configured status;
build() rejects every mismatched payload combination.
- Author:
- Mark Allen
-
Method Summary
Modifier and TypeMethodDescriptionaddInputRequest(@NonNull String key, @NonNull McpInputRequest inputRequest) Appends one uniquely keyed outstanding input request.addInputRequests(@NonNull Map<@NonNull String, ? extends @NonNull McpInputRequest> inputRequests) Appends outstanding input requests in iteration order.build()Builds and validates the immutable task snapshot.completedResult(@NonNull McpCompleteResult completedResult) Supplies the required completed operation result.failure(@NonNull McpJsonRpcError failure) Supplies the required task-execution JSON-RPC failure.metadata(@Nullable McpJsonObject metadata) Sets task-result protocol extension metadata.pollInterval(@Nullable Duration pollInterval) Sets or clears the suggested polling interval.taskStatusMessage(@Nullable String taskStatusMessage) Sets or clears the client-visible status message.timeToLive(@Nullable Duration timeToLive) Sets the task time to live or selects unlimited retention.
-
Method Details
-
taskStatusMessage
Sets or clears the client-visible status message.- Parameters:
taskStatusMessage- status message, or null to clear- Returns:
- this builder
-
timeToLive
Sets the task time to live or selects unlimited retention.- Parameters:
timeToLive- positive whole-millisecond duration, or null for the wire-level unlimited value- Returns:
- this builder
- Throws:
IllegalArgumentException- if the duration is not positive, has sub-millisecond precision, or does not fit in a signed 64-bit millisecond count
-
pollInterval
Sets or clears the suggested polling interval.- Parameters:
pollInterval- positive whole-millisecond duration, or null to omit the suggestion- Returns:
- this builder
- Throws:
IllegalArgumentException- if the duration is not positive, has sub-millisecond precision, or does not fit in a signed 64-bit millisecond count
-
addInputRequest
public @NonNull McpTask.Builder addInputRequest(@NonNull String key, @NonNull McpInputRequest inputRequest) Appends one uniquely keyed outstanding input request.- Parameters:
key- task-lifetime-unique input-request keyinputRequest- outstanding input request- Returns:
- this builder
- Throws:
NullPointerException- if an argument is nullIllegalArgumentException- if the key is already present or contains malformed UTF-16
-
addInputRequests
public @NonNull McpTask.Builder addInputRequests(@NonNull Map<@NonNull String, ? extends @NonNull McpInputRequest> inputRequests) Appends outstanding input requests in iteration order.The call fails without mutation if an entry is null or any key is already present in this builder.
- Parameters:
inputRequests- input requests to append- Returns:
- this builder
- Throws:
NullPointerException- if the map, a key, or a value is nullIllegalArgumentException- if a key is already present or contains malformed UTF-16
-
completedResult
Supplies the required completed operation result.- Parameters:
completedResult- completed operation result- Returns:
- this builder
-
failure
Supplies the required task-execution JSON-RPC failure.- Parameters:
failure- client-visible JSON-RPC failure- Returns:
- this builder
-
metadata
Sets task-result protocol extension metadata.- Parameters:
metadata- immutable metadata, or null to restore the empty default- Returns:
- this builder
- Throws:
IllegalArgumentException- whenbuild()is called if the metadata uses a reserved MCP key
-
build
Builds and validates the immutable task snapshot.- Returns:
- immutable task
- Throws:
IllegalStateException- if the status-specific payload is absent or does not match the task status
-