You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: forge.schema.json
+140Lines changed: 140 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -213,6 +213,13 @@
213
213
"default": 0,
214
214
"minimum": 0
215
215
},
216
+
"providers": {
217
+
"description": "Additional provider definitions merged with the built-in provider list.\n\nEntries with an `id` matching a built-in provider override its fields;\nentries with a new `id` are appended and become available for model\nselection.",
218
+
"type": "array",
219
+
"items": {
220
+
"$ref": "#/$defs/ProviderEntry"
221
+
}
222
+
},
216
223
"reasoning": {
217
224
"description": "Reasoning configuration applied to all agents; controls effort level,\ntoken budget, and visibility of the model's thinking process.",
218
225
"anyOf": [
@@ -582,6 +589,139 @@
582
589
}
583
590
}
584
591
},
592
+
"ProviderAuthMethod": {
593
+
"description": "Authentication method supported by a provider.\n\nOnly the simple (non-OAuth) methods are available here; providers that\nrequire OAuth device or authorization-code flows must be configured via the\nfile-based `provider.json` override instead.",
594
+
"type": "string",
595
+
"enum": [
596
+
"api_key",
597
+
"google_adc"
598
+
]
599
+
},
600
+
"ProviderEntry": {
601
+
"description": "A single provider entry defined inline in `forge.toml`.\n\nInline providers are merged with the built-in provider list; entries with\nthe same `id` override the corresponding built-in entry field-by-field,\nwhile entries with a new `id` are appended to the list.",
602
+
"type": "object",
603
+
"properties": {
604
+
"api_key_var": {
605
+
"description": "Environment variable holding the API key for this provider.",
606
+
"type": [
607
+
"string",
608
+
"null"
609
+
]
610
+
},
611
+
"auth_methods": {
612
+
"description": "Authentication methods supported by this provider; defaults to\n`[\"api_key\"]` when omitted.",
613
+
"type": "array",
614
+
"items": {
615
+
"$ref": "#/$defs/ProviderAuthMethod"
616
+
}
617
+
},
618
+
"custom_headers": {
619
+
"description": "Additional HTTP headers sent with every request to this provider.",
620
+
"type": [
621
+
"object",
622
+
"null"
623
+
],
624
+
"additionalProperties": {
625
+
"type": "string"
626
+
}
627
+
},
628
+
"id": {
629
+
"description": "Unique provider identifier used in model paths (e.g. `\"my_provider\"`).",
630
+
"type": "string"
631
+
},
632
+
"models": {
633
+
"description": "URL template for fetching the model list; may contain `{{VAR}}`\nplaceholders.",
634
+
"type": [
635
+
"string",
636
+
"null"
637
+
]
638
+
},
639
+
"provider_type": {
640
+
"description": "Provider category; defaults to `llm` when omitted.",
641
+
"anyOf": [
642
+
{
643
+
"$ref": "#/$defs/ProviderTypeEntry"
644
+
},
645
+
{
646
+
"type": "null"
647
+
}
648
+
]
649
+
},
650
+
"response_type": {
651
+
"description": "Wire protocol used by this provider.",
652
+
"anyOf": [
653
+
{
654
+
"$ref": "#/$defs/ProviderResponseType"
655
+
},
656
+
{
657
+
"type": "null"
658
+
}
659
+
]
660
+
},
661
+
"url": {
662
+
"description": "URL template for chat completions; may contain `{{VAR}}` placeholders\nthat are substituted from the credential's url params.",
663
+
"type": "string"
664
+
},
665
+
"url_param_vars": {
666
+
"description": "Environment variables whose values are substituted into `{{VAR}}`\nplaceholders in the `url` and `models` templates.",
667
+
"type": "array",
668
+
"items": {
669
+
"$ref": "#/$defs/ProviderUrlParam"
670
+
}
671
+
}
672
+
},
673
+
"required": [
674
+
"id",
675
+
"url"
676
+
]
677
+
},
678
+
"ProviderResponseType": {
679
+
"description": "Wire protocol a provider uses for chat completions.",
680
+
"type": "string",
681
+
"enum": [
682
+
"OpenAI",
683
+
"OpenAIResponses",
684
+
"Anthropic",
685
+
"Bedrock",
686
+
"Google",
687
+
"OpenCode"
688
+
]
689
+
},
690
+
"ProviderTypeEntry": {
691
+
"description": "Category of a provider.",
692
+
"oneOf": [
693
+
{
694
+
"description": "LLM provider for chat completions.",
695
+
"type": "string",
696
+
"const": "llm"
697
+
},
698
+
{
699
+
"description": "Context engine provider for code indexing and search.",
700
+
"type": "string",
701
+
"const": "context_engine"
702
+
}
703
+
]
704
+
},
705
+
"ProviderUrlParam": {
706
+
"description": "A URL parameter variable for a provider, used to substitute template\nvariables in URL strings.",
707
+
"type": "object",
708
+
"properties": {
709
+
"name": {
710
+
"description": "The environment variable name used as the template variable key.",
711
+
"type": "string"
712
+
},
713
+
"options": {
714
+
"description": "Optional preset values for this parameter shown as suggestions in the\nUI.",
715
+
"type": "array",
716
+
"items": {
717
+
"type": "string"
718
+
}
719
+
}
720
+
},
721
+
"required": [
722
+
"name"
723
+
]
724
+
},
585
725
"ReasoningConfig": {
586
726
"description": "Controls the reasoning behaviour of a model, including effort level, token\nbudget, and visibility of the thinking process.",
0 commit comments