@@ -116,29 +116,6 @@ function logError(value: unknown, options: AgentRunOptions | undefined): void {
116116 }
117117}
118118
119- function logPromptResult (
120- result : { info : AssistantMessage ; parts ?: Part [ ] } ,
121- options : AgentRunOptions | undefined ,
122- logs ?: string [ ] ,
123- ) : void {
124- logJson ( { info : result . info } , options ) ;
125-
126- if ( ! Array . isArray ( result . parts ) ) {
127- logError (
128- {
129- error : "invalid_parts_array" ,
130- message : `Expected 'parts' to be an array, but got ${ typeof result . parts } ` ,
131- receivedResponse : result ,
132- } ,
133- options ,
134- ) ;
135-
136- return ;
137- }
138-
139- result . parts . forEach ( ( part ) => logJson ( part , options ) ) ;
140- }
141-
142119function serializeError ( error : unknown ) : Record < string , unknown > {
143120 if ( error instanceof Error ) {
144121 return {
@@ -198,7 +175,7 @@ const opencodeAgent: AgentDefinition = {
198175 try {
199176 const [ providerID , modelID ] = model . split ( "/" ) ;
200177
201- const { data } = await opencode . client . session . prompt ( {
178+ const { data, error } = await opencode . client . session . prompt ( {
202179 path : { id : sessionID ! } ,
203180 query : { directory : cwd } ,
204181 body : {
@@ -208,24 +185,21 @@ const opencodeAgent: AgentDefinition = {
208185 } ,
209186 parts : [ { type : "text" , text : prompt } ] ,
210187 } ,
211- throwOnError : true ,
212188 } ) ;
213189
214- if ( data . info ?. tokens ) {
215- usage . input = data . info . tokens . input || 0 ;
216- usage . output = data . info . tokens . output || 0 ;
217- } else {
218- console . error (
219- `[opencode] WARNING: No token usage in response. Available fields: ${ Object . keys ( data . info || { } ) . join ( ", " ) } ` ,
220- ) ;
190+ if ( error ) {
191+ throw error ;
221192 }
222193
194+ usage . input = data . info . tokens . input || 0 ;
195+ usage . output = data . info . tokens . output || 0 ;
196+
223197 actions . push ( JSON . stringify ( data . info ) ) ;
224- if ( Array . isArray ( data . parts ) ) {
225- data . parts . forEach ( ( part ) => actions . push ( JSON . stringify ( part ) ) ) ;
226- }
227198
228- logPromptResult ( data , options ) ;
199+ data . parts . forEach ( ( part ) => actions . push ( JSON . stringify ( part ) ) ) ;
200+
201+ logJson ( { info : data . info } , options ) ;
202+ data . parts . forEach ( ( part ) => logJson ( part , options ) ) ;
229203 } catch ( error ) {
230204 console . error (
231205 `[opencode] Error in ${ model } :` ,
0 commit comments