@@ -153,7 +153,7 @@ func LookupModel(r *registry.Registry, provider, name string) Model {
153153// It returns an error if the model was not defined.
154154func LookupModelByName (r * registry.Registry , modelName string ) (Model , error ) {
155155 if modelName == "" {
156- return nil , errors . New ( "ai.LookupModelByName: model not specified" )
156+ return nil , core . NewError ( core . INVALID_ARGUMENT , "ai.LookupModelByName: model not specified" )
157157 }
158158
159159 provider , name , found := strings .Cut (modelName , "/" )
@@ -165,9 +165,9 @@ func LookupModelByName(r *registry.Registry, modelName string) (Model, error) {
165165 model := LookupModel (r , provider , name )
166166 if model == nil {
167167 if provider == "" {
168- return nil , fmt . Errorf ( "ai.LookupModelByName: no model named %q " , name )
168+ return nil , core . NewError ( core . NOT_FOUND , "ai.LookupModelByName: model %q not found " , name )
169169 }
170- return nil , fmt . Errorf ( "ai.LookupModelByName: no model named %q for provider %q" , name , provider )
170+ return nil , core . NewError ( core . NOT_FOUND , "ai.LookupModelByName: model %q by provider %q not found " , name , provider )
171171 }
172172
173173 return model , nil
@@ -180,7 +180,7 @@ func GenerateWithRequest(ctx context.Context, r *registry.Registry, opts *Genera
180180 opts .Model = defaultModel
181181 }
182182 if opts .Model == "" {
183- return nil , errors . New ( "ai.GenerateWithRequest: model is required" )
183+ return nil , core . NewError ( core . INVALID_ARGUMENT , "ai.GenerateWithRequest: model is required" )
184184 }
185185 }
186186
@@ -193,12 +193,12 @@ func GenerateWithRequest(ctx context.Context, r *registry.Registry, opts *Genera
193193 toolDefMap := make (map [string ]* ToolDefinition )
194194 for _ , t := range opts .Tools {
195195 if _ , ok := toolDefMap [t ]; ok {
196- return nil , fmt . Errorf ( "ai.GenerateWithRequest: duplicate tool found: %q" , t )
196+ return nil , core . NewError ( core . INVALID_ARGUMENT , "ai.GenerateWithRequest: duplicate tool %q" , t )
197197 }
198198
199199 tool := LookupTool (r , t )
200200 if tool == nil {
201- return nil , fmt . Errorf ( "ai.GenerateWithRequest: tool not found: %q " , t )
201+ return nil , core . NewError ( core . NOT_FOUND , "ai.GenerateWithRequest: tool %q not found" , t )
202202 }
203203
204204 toolDefMap [t ] = tool .Definition ()
@@ -210,7 +210,7 @@ func GenerateWithRequest(ctx context.Context, r *registry.Registry, opts *Genera
210210
211211 maxTurns := opts .MaxTurns
212212 if maxTurns < 0 {
213- return nil , fmt . Errorf ( "ai.GenerateWithRequest: max turns must be greater than 0, got %d" , maxTurns )
213+ return nil , core . NewError ( core . INVALID_ARGUMENT , "ai.GenerateWithRequest: max turns must be greater than 0, got %d" , maxTurns )
214214 }
215215 if maxTurns == 0 {
216216 maxTurns = 5 // Default max turns.
@@ -276,7 +276,8 @@ func GenerateWithRequest(ctx context.Context, r *registry.Registry, opts *Genera
276276 resp .Message , err = formatHandler .ParseMessage (resp .Message )
277277 if err != nil {
278278 logger .FromContext (ctx ).Debug ("model failed to generate output matching expected schema" , "error" , err .Error ())
279- return nil , fmt .Errorf ("model failed to generate output matching expected schema: %w" , err )
279+ return nil , core .NewError (core .INTERNAL , "model failed to generate output matching expected schema: %v" , err )
280+
280281 }
281282 }
282283
@@ -291,7 +292,7 @@ func GenerateWithRequest(ctx context.Context, r *registry.Registry, opts *Genera
291292 }
292293
293294 if currentTurn + 1 > maxTurns {
294- return nil , fmt . Errorf ( "exceeded maximum tool call iterations (%d)" , maxTurns )
295+ return nil , core . NewError ( core . ABORTED , "exceeded maximum tool call iterations (%d)" , maxTurns )
295296 }
296297
297298 newReq , interruptMsg , err := handleToolRequests (ctx , r , req , resp , cb )
@@ -318,7 +319,7 @@ func Generate(ctx context.Context, r *registry.Registry, opts ...GenerateOption)
318319 genOpts := & generateOptions {}
319320 for _ , opt := range opts {
320321 if err := opt .applyGenerate (genOpts ); err != nil {
321- return nil , fmt . Errorf ( "ai.Generate: error applying options: %w " , err )
322+ return nil , core . NewError ( core . INVALID_ARGUMENT , "ai.Generate: error applying options: %v " , err )
322323 }
323324 }
324325
@@ -421,7 +422,7 @@ func (m *model) Name() string {
421422// Generate applies the [Action] to provided request.
422423func (m * model ) Generate (ctx context.Context , req * ModelRequest , cb ModelStreamCallback ) (* ModelResponse , error ) {
423424 if m == nil {
424- return nil , errors . New ( "Model.Generate: generate called on a nil model; check that all models are defined" )
425+ return nil , core . NewError ( core . INVALID_ARGUMENT , "Model.Generate: generate called on a nil model; check that all models are defined" )
425426 }
426427
427428 return (* core.ActionDef [* ModelRequest , * ModelResponse , * ModelResponseChunk ])(m ).Run (ctx , req , cb )
@@ -478,12 +479,12 @@ func cloneMessage(m *Message) *Message {
478479 panic (fmt .Sprintf ("failed to marshal message: %v" , err ))
479480 }
480481
481- var copy Message
482- if err := json .Unmarshal (bytes , & copy ); err != nil {
482+ var msgCopy Message
483+ if err := json .Unmarshal (bytes , & msgCopy ); err != nil {
483484 panic (fmt .Sprintf ("failed to unmarshal message: %v" , err ))
484485 }
485486
486- return & copy
487+ return & msgCopy
487488}
488489
489490// handleToolRequests processes any tool requests in the response, returning
@@ -520,7 +521,7 @@ func handleToolRequests(ctx context.Context, r *registry.Registry, req *ModelReq
520521 toolReq := p .ToolRequest
521522 tool := LookupTool (r , toolReq .Name )
522523 if tool == nil {
523- resultChan <- toolResult {idx , nil , fmt . Errorf ( "tool %q not found" , toolReq .Name )}
524+ resultChan <- toolResult {idx , nil , core . NewError ( core . NOT_FOUND , "tool %q not found" , toolReq .Name )}
524525 return
525526 }
526527
@@ -538,7 +539,7 @@ func handleToolRequests(ctx context.Context, r *registry.Registry, req *ModelReq
538539 resultChan <- toolResult {idx , nil , interruptErr }
539540 return
540541 }
541- resultChan <- toolResult {idx , nil , fmt . Errorf ( "tool %q failed: %w " , toolReq .Name , err )}
542+ resultChan <- toolResult {idx , nil , core . NewError ( core . INTERNAL , "tool %q failed: %v " , toolReq .Name , err )}
542543 return
543544 }
544545
0 commit comments