|
362 | 362 | "contextLimit" |
363 | 363 | ] |
364 | 364 | }, |
365 | | - "GetProviderModelsRequest": { |
| 365 | + "GetProviderInventoryRequest": { |
366 | 366 | "type": "object", |
367 | 367 | "properties": { |
368 | | - "providerName": { |
369 | | - "type": "string" |
| 368 | + "providerIds": { |
| 369 | + "type": "array", |
| 370 | + "items": { |
| 371 | + "type": "string" |
| 372 | + }, |
| 373 | + "description": "Only return entries for these providers. Empty means all.", |
| 374 | + "default": [] |
| 375 | + } |
| 376 | + }, |
| 377 | + "description": "Read per-provider inventory. Always returns immediately from stored state.", |
| 378 | + "x-side": "agent", |
| 379 | + "x-method": "_goose/providers/inventory" |
| 380 | + }, |
| 381 | + "GetProviderInventoryResponse": { |
| 382 | + "type": "object", |
| 383 | + "properties": { |
| 384 | + "entries": { |
| 385 | + "type": "array", |
| 386 | + "items": { |
| 387 | + "$ref": "#/$defs/ProviderInventoryEntryDto" |
| 388 | + } |
370 | 389 | } |
371 | 390 | }, |
372 | 391 | "required": [ |
373 | | - "providerName" |
| 392 | + "entries" |
374 | 393 | ], |
375 | | - "description": "Fetch the full list of models available for a specific provider.", |
| 394 | + "description": "Provider inventory response.", |
376 | 395 | "x-side": "agent", |
377 | | - "x-method": "_goose/providers/models" |
| 396 | + "x-method": "_goose/providers/inventory" |
378 | 397 | }, |
379 | | - "GetProviderModelsResponse": { |
| 398 | + "ProviderInventoryEntryDto": { |
380 | 399 | "type": "object", |
381 | 400 | "properties": { |
| 401 | + "providerId": { |
| 402 | + "type": "string", |
| 403 | + "description": "Provider identifier." |
| 404 | + }, |
| 405 | + "providerName": { |
| 406 | + "type": "string", |
| 407 | + "description": "Human-readable provider name." |
| 408 | + }, |
| 409 | + "configured": { |
| 410 | + "type": "boolean", |
| 411 | + "description": "Whether Goose has enough configuration to use this provider." |
| 412 | + }, |
| 413 | + "supportsRefresh": { |
| 414 | + "type": "boolean", |
| 415 | + "description": "Whether this provider supports background inventory refresh." |
| 416 | + }, |
| 417 | + "refreshing": { |
| 418 | + "type": "boolean", |
| 419 | + "description": "Whether a refresh is currently in flight." |
| 420 | + }, |
382 | 421 | "models": { |
| 422 | + "type": "array", |
| 423 | + "items": { |
| 424 | + "$ref": "#/$defs/ProviderInventoryModelDto" |
| 425 | + }, |
| 426 | + "description": "The list of available models." |
| 427 | + }, |
| 428 | + "lastUpdatedAt": { |
| 429 | + "type": [ |
| 430 | + "string", |
| 431 | + "null" |
| 432 | + ], |
| 433 | + "description": "When this entry was last successfully refreshed (ISO 8601)." |
| 434 | + }, |
| 435 | + "lastRefreshAttemptAt": { |
| 436 | + "type": [ |
| 437 | + "string", |
| 438 | + "null" |
| 439 | + ], |
| 440 | + "description": "When a refresh was most recently attempted (ISO 8601)." |
| 441 | + }, |
| 442 | + "lastRefreshError": { |
| 443 | + "type": [ |
| 444 | + "string", |
| 445 | + "null" |
| 446 | + ], |
| 447 | + "description": "The last refresh failure message, if any." |
| 448 | + }, |
| 449 | + "stale": { |
| 450 | + "type": "boolean", |
| 451 | + "description": "Whether we believe this data may be outdated." |
| 452 | + }, |
| 453 | + "modelSelectionHint": { |
| 454 | + "type": [ |
| 455 | + "string", |
| 456 | + "null" |
| 457 | + ], |
| 458 | + "description": "Guidance message shown when this provider manages its own model selection externally." |
| 459 | + } |
| 460 | + }, |
| 461 | + "required": [ |
| 462 | + "providerId", |
| 463 | + "providerName", |
| 464 | + "configured", |
| 465 | + "supportsRefresh", |
| 466 | + "refreshing", |
| 467 | + "models", |
| 468 | + "stale" |
| 469 | + ], |
| 470 | + "description": "Provider inventory entry." |
| 471 | + }, |
| 472 | + "ProviderInventoryModelDto": { |
| 473 | + "type": "object", |
| 474 | + "properties": { |
| 475 | + "id": { |
| 476 | + "type": "string", |
| 477 | + "description": "Model identifier as the provider knows it." |
| 478 | + }, |
| 479 | + "name": { |
| 480 | + "type": "string", |
| 481 | + "description": "Human-readable display name." |
| 482 | + }, |
| 483 | + "family": { |
| 484 | + "type": [ |
| 485 | + "string", |
| 486 | + "null" |
| 487 | + ], |
| 488 | + "description": "Model family for grouping in UI." |
| 489 | + }, |
| 490 | + "contextLimit": { |
| 491 | + "type": [ |
| 492 | + "integer", |
| 493 | + "null" |
| 494 | + ], |
| 495 | + "format": "uint", |
| 496 | + "minimum": 0, |
| 497 | + "description": "Context window size in tokens." |
| 498 | + }, |
| 499 | + "reasoning": { |
| 500 | + "type": [ |
| 501 | + "boolean", |
| 502 | + "null" |
| 503 | + ], |
| 504 | + "description": "Whether the model supports reasoning/extended thinking." |
| 505 | + }, |
| 506 | + "recommended": { |
| 507 | + "type": "boolean", |
| 508 | + "description": "Whether this model should appear in the compact recommended picker.", |
| 509 | + "default": false |
| 510 | + } |
| 511 | + }, |
| 512 | + "required": [ |
| 513 | + "id", |
| 514 | + "name" |
| 515 | + ], |
| 516 | + "description": "A single model in provider inventory." |
| 517 | + }, |
| 518 | + "RefreshProviderInventoryRequest": { |
| 519 | + "type": "object", |
| 520 | + "properties": { |
| 521 | + "providerIds": { |
383 | 522 | "type": "array", |
384 | 523 | "items": { |
385 | 524 | "type": "string" |
386 | | - } |
| 525 | + }, |
| 526 | + "description": "Which providers to refresh. Empty means all known providers.", |
| 527 | + "default": [] |
| 528 | + } |
| 529 | + }, |
| 530 | + "description": "Trigger a background refresh of provider inventories.", |
| 531 | + "x-side": "agent", |
| 532 | + "x-method": "_goose/providers/inventory/refresh" |
| 533 | + }, |
| 534 | + "RefreshProviderInventoryResponse": { |
| 535 | + "type": "object", |
| 536 | + "properties": { |
| 537 | + "started": { |
| 538 | + "type": "array", |
| 539 | + "items": { |
| 540 | + "type": "string" |
| 541 | + }, |
| 542 | + "description": "Which providers will be refreshed." |
| 543 | + }, |
| 544 | + "skipped": { |
| 545 | + "type": "array", |
| 546 | + "items": { |
| 547 | + "$ref": "#/$defs/RefreshProviderInventorySkipDto" |
| 548 | + }, |
| 549 | + "description": "Which providers were skipped and why.", |
| 550 | + "default": [] |
387 | 551 | } |
388 | 552 | }, |
389 | 553 | "required": [ |
390 | | - "models" |
| 554 | + "started" |
391 | 555 | ], |
392 | | - "description": "Provider models response.", |
| 556 | + "description": "Refresh acknowledgement.", |
393 | 557 | "x-side": "agent", |
394 | | - "x-method": "_goose/providers/models" |
| 558 | + "x-method": "_goose/providers/inventory/refresh" |
| 559 | + }, |
| 560 | + "RefreshProviderInventorySkipDto": { |
| 561 | + "type": "object", |
| 562 | + "properties": { |
| 563 | + "providerId": { |
| 564 | + "type": "string" |
| 565 | + }, |
| 566 | + "reason": { |
| 567 | + "$ref": "#/$defs/RefreshProviderInventorySkipReasonDto" |
| 568 | + } |
| 569 | + }, |
| 570 | + "required": [ |
| 571 | + "providerId", |
| 572 | + "reason" |
| 573 | + ] |
| 574 | + }, |
| 575 | + "RefreshProviderInventorySkipReasonDto": { |
| 576 | + "type": "string", |
| 577 | + "enum": [ |
| 578 | + "unknown_provider", |
| 579 | + "not_configured", |
| 580 | + "does_not_support_refresh", |
| 581 | + "already_refreshing" |
| 582 | + ] |
395 | 583 | }, |
396 | 584 | "ReadConfigRequest": { |
397 | 585 | "type": "object", |
|
1035 | 1223 | { |
1036 | 1224 | "allOf": [ |
1037 | 1225 | { |
1038 | | - "$ref": "#/$defs/GetProviderModelsRequest" |
| 1226 | + "$ref": "#/$defs/GetProviderInventoryRequest" |
| 1227 | + } |
| 1228 | + ], |
| 1229 | + "description": "Params for _goose/providers/inventory", |
| 1230 | + "title": "GetProviderInventoryRequest" |
| 1231 | + }, |
| 1232 | + { |
| 1233 | + "allOf": [ |
| 1234 | + { |
| 1235 | + "$ref": "#/$defs/RefreshProviderInventoryRequest" |
1039 | 1236 | } |
1040 | 1237 | ], |
1041 | | - "description": "Params for _goose/providers/models", |
1042 | | - "title": "GetProviderModelsRequest" |
| 1238 | + "description": "Params for _goose/providers/inventory/refresh", |
| 1239 | + "title": "RefreshProviderInventoryRequest" |
1043 | 1240 | }, |
1044 | 1241 | { |
1045 | 1242 | "allOf": [ |
|
1292 | 1489 | { |
1293 | 1490 | "allOf": [ |
1294 | 1491 | { |
1295 | | - "$ref": "#/$defs/GetProviderModelsResponse" |
| 1492 | + "$ref": "#/$defs/GetProviderInventoryResponse" |
| 1493 | + } |
| 1494 | + ], |
| 1495 | + "title": "GetProviderInventoryResponse" |
| 1496 | + }, |
| 1497 | + { |
| 1498 | + "allOf": [ |
| 1499 | + { |
| 1500 | + "$ref": "#/$defs/RefreshProviderInventoryResponse" |
1296 | 1501 | } |
1297 | 1502 | ], |
1298 | | - "title": "GetProviderModelsResponse" |
| 1503 | + "title": "RefreshProviderInventoryResponse" |
1299 | 1504 | }, |
1300 | 1505 | { |
1301 | 1506 | "allOf": [ |
|
0 commit comments