@@ -161,6 +161,50 @@ class UnifiedAPIClient {
161161 if ( ! provider ) {
162162 throw new Error ( `Unknown provider: ${ modelId } ` ) ;
163163 }
164+
165+ // For local providers, delegate to local provider handlers
166+ if ( provider . type === 'local' ) {
167+ const localProviders = require ( '../localProviders' ) ;
168+
169+ if ( provider . httpConfig ) {
170+ const providerHandler = localProviders . getHttpProvider ( provider . name ) ;
171+ if ( providerHandler && providerHandler . extractResponse ) {
172+ return providerHandler . extractResponse ( responseData ) ;
173+ }
174+ } else if ( provider . processConfig ) {
175+ const providerHandler = localProviders . getProcessProvider ( provider . name ) ;
176+ if ( providerHandler && providerHandler . extractResponse ) {
177+ return providerHandler . extractResponse ( responseData ) ;
178+ }
179+ }
180+
181+ // Fallback for local providers
182+ return typeof responseData === 'string' ? responseData : JSON . stringify ( responseData ) ;
183+ }
184+
185+ // For API providers, use the apiConfig.extractResponse function
186+ if ( provider . apiConfig && provider . apiConfig . extractResponse ) {
187+ return provider . apiConfig . extractResponse ( responseData ) ;
188+ }
189+
190+ // Fallback for API providers without extractResponse
191+ if ( responseData && typeof responseData === 'object' ) {
192+ // Try common response patterns
193+ if ( responseData . choices && responseData . choices [ 0 ] && responseData . choices [ 0 ] . message ) {
194+ return responseData . choices [ 0 ] . message . content ;
195+ }
196+ if ( responseData . content && responseData . content [ 0 ] && responseData . content [ 0 ] . text ) {
197+ return responseData . content [ 0 ] . text ;
198+ }
199+ if ( responseData . text ) {
200+ return responseData . text ;
201+ }
202+ if ( responseData . message ) {
203+ return responseData . message ;
204+ }
205+ }
206+
207+ throw new Error ( `Unable to extract response from ${ provider . name } API` ) ;
164208 }
165209
166210 /**
0 commit comments