-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathToolResultObject.java
More file actions
174 lines (152 loc) · 4.38 KB
/
ToolResultObject.java
File metadata and controls
174 lines (152 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------------------------------------------*/
package com.github.copilot.sdk.json;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Result object returned from a tool execution.
* <p>
* This class represents the structured result of a tool invocation, including
* text output, binary data, error information, and telemetry.
*
* <h2>Example: Success Result</h2>
*
* <pre>{@code
* return new ToolResultObject().setResultType("success").setTextResultForLlm("File contents: " + content);
* }</pre>
*
* <h2>Example: Error Result</h2>
*
* <pre>{@code
* return new ToolResultObject().setResultType("error").setError("File not found: " + path);
* }</pre>
*
* @see ToolHandler
* @see ToolBinaryResult
* @since 1.0.0
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public final class ToolResultObject {
@JsonProperty("textResultForLlm")
private String textResultForLlm;
@JsonProperty("binaryResultsForLlm")
private List<ToolBinaryResult> binaryResultsForLlm;
@JsonProperty("resultType")
private String resultType = "success";
@JsonProperty("error")
private String error;
@JsonProperty("sessionLog")
private String sessionLog;
@JsonProperty("toolTelemetry")
private Map<String, Object> toolTelemetry;
/**
* Gets the text result to be sent to the LLM.
*
* @return the text result
*/
public String getTextResultForLlm() {
return textResultForLlm;
}
/**
* Sets the text result to be sent to the LLM.
*
* @param textResultForLlm
* the text result
* @return this result for method chaining
*/
public ToolResultObject setTextResultForLlm(String textResultForLlm) {
this.textResultForLlm = textResultForLlm;
return this;
}
/**
* Gets the binary results to be sent to the LLM.
*
* @return the list of binary results
*/
public List<ToolBinaryResult> getBinaryResultsForLlm() {
return binaryResultsForLlm;
}
/**
* Sets binary results (images, files) to be sent to the LLM.
*
* @param binaryResultsForLlm
* the list of binary results
* @return this result for method chaining
*/
public ToolResultObject setBinaryResultsForLlm(List<ToolBinaryResult> binaryResultsForLlm) {
this.binaryResultsForLlm = binaryResultsForLlm;
return this;
}
/**
* Gets the result type.
*
* @return the result type ("success" or "error")
*/
public String getResultType() {
return resultType;
}
/**
* Sets the result type.
*
* @param resultType
* "success" or "error"
* @return this result for method chaining
*/
public ToolResultObject setResultType(String resultType) {
this.resultType = resultType;
return this;
}
/**
* Gets the error message.
*
* @return the error message, or {@code null} if successful
*/
public String getError() {
return error;
}
/**
* Sets an error message for failed tool execution.
*
* @param error
* the error message
* @return this result for method chaining
*/
public ToolResultObject setError(String error) {
this.error = error;
return this;
}
/**
* Gets the session log entry.
*
* @return the session log text
*/
public String getSessionLog() {
return sessionLog;
}
/**
* Sets a log entry to be recorded in the session.
*
* @param sessionLog
* the log entry
* @return this result for method chaining
*/
public ToolResultObject setSessionLog(String sessionLog) {
this.sessionLog = sessionLog;
return this;
}
/**
* Gets the tool telemetry data.
*
* @return the telemetry map
*/
public Map<String, Object> getToolTelemetry() {
return toolTelemetry;
}
public ToolResultObject setToolTelemetry(Map<String, Object> toolTelemetry) {
this.toolTelemetry = toolTelemetry;
return this;
}
}