Skip to content

Commit e72426b

Browse files
change to support multiple vendors
1 parent 3f0265e commit e72426b

5 files changed

Lines changed: 22 additions & 18 deletions

File tree

cli/cmd/engine-cli/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var (
3737
selectedModel string
3838
defaultModel string
3939
availableModels []string
40-
modelVendor string
40+
modelVendors []string
4141
)
4242

4343
func main() {
@@ -97,7 +97,7 @@ func init() {
9797
runCmd.Flags().StringVar(&selectedModel, "selected-model", "", "Selected model for this job")
9898
runCmd.Flags().StringVar(&defaultModel, "default-model", "", "Default model for this engine")
9999
runCmd.Flags().StringSliceVar(&availableModels, "available-model", nil, "Available model for this engine (repeatable)")
100-
runCmd.Flags().StringVar(&modelVendor, "model-vendor", "", "Model vendor for filtering (e.g. Anthropic, OpenAI)")
100+
runCmd.Flags().StringSliceVar(&modelVendors, "model-vendor", nil, "Model vendor for filtering (repeatable, e.g. Anthropic, OpenAI)")
101101

102102
_ = runCmd.MarkFlagRequired("repo")
103103
}
@@ -163,7 +163,7 @@ func runEngine(cmd *cobra.Command, args []string) error {
163163
SelectedModel: selectedModel,
164164
DefaultModel: defaultModel,
165165
AvailableModels: availableModels,
166-
ModelVendor: modelVendor,
166+
ModelVendors: modelVendors,
167167
}
168168

169169
prNumber := setup.PRNumber
@@ -286,7 +286,7 @@ func runEngine(cmd *cobra.Command, args []string) error {
286286
env.SelectedModel = selectedModel
287287
env.DefaultModel = defaultModel
288288
env.AvailableModels = availableModels
289-
env.ModelVendor = modelVendor
289+
env.ModelVendors = modelVendors
290290
}
291291

292292
result := runner.Run(ctx, command, env, runner.Options{WorkingDir: workingDir}, runnerCallbacks)

cli/internal/runner/runner.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type Environment struct {
2626
SelectedModel string
2727
DefaultModel string
2828
AvailableModels []string
29-
ModelVendor string
29+
ModelVendors []string
3030
}
3131

3232
// Callbacks contains optional callbacks for runner events.
@@ -156,8 +156,10 @@ func buildEnv(env Environment, extra map[string]string) []string {
156156
}
157157
}
158158

159-
if env.ModelVendor != "" {
160-
platformVars["GITHUB_MODEL_VENDOR"] = env.ModelVendor
159+
if len(env.ModelVendors) > 0 {
160+
if encoded, err := json.Marshal(env.ModelVendors); err == nil {
161+
platformVars["GITHUB_MODEL_VENDORS"] = string(encoded)
162+
}
161163
}
162164

163165
for k, v := range platformVars {

cli/internal/server/server.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type JobConfig struct {
3535
SelectedModel string
3636
DefaultModel string
3737
AvailableModels []string
38-
ModelVendor string
38+
ModelVendors []string
3939
}
4040

4141
// ProgressEvent represents a progress event received from an engine.
@@ -228,8 +228,8 @@ func (s *MockPlatformServer) handleGetJob(w http.ResponseWriter, r *http.Request
228228
response["available_models"] = s.jobConfig.AvailableModels
229229
}
230230

231-
if s.jobConfig.ModelVendor != "" {
232-
response["model_vendor"] = s.jobConfig.ModelVendor
231+
if len(s.jobConfig.ModelVendors) > 0 {
232+
response["model_vendors"] = s.jobConfig.ModelVendors
233233
}
234234
}
235235

docs/integration-guide.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,11 @@ author: 'Your Name'
7878
# The platform executes this command directly — no implicit runtime setup.
7979
entrypoint: 'node --enable-source-maps dist/index.js'
8080

81-
# Optional: Specify the model vendor for model selection (e.g. 'Anthropic', 'OpenAI').
82-
# When set, the platform uses this to determine the available models for the engine.
83-
vendor: 'Anthropic'
81+
# Optional: Specify the model vendors for model selection (e.g. 'Anthropic', 'OpenAI').
82+
# When set, the platform uses these to determine the available models for the engine.
83+
vendors:
84+
- 'Anthropic'
85+
- 'OpenAI'
8486
```
8587
8688
> **Note:** This is not a GitHub Action. The platform reads `entrypoint` from `engine.yaml` and runs it directly. All paths in the entrypoint are resolved relative to the engine's root directory.
@@ -101,7 +103,7 @@ The platform injects these environment variables into the engine process at runt
101103
| `GITHUB_SELECTED_MODEL` | No | Model selected by the platform for this run. Only set when model selection is enabled. |
102104
| `GITHUB_DEFAULT_MODEL` | No | Default model for the selected engine. Only set when model selection is enabled. |
103105
| `GITHUB_AVAILABLE_MODELS` | No | JSON array of models the engine can choose from (e.g. `["claude-sonnet-4.5","claude-opus-4.1"]`). Only set when model selection is enabled. |
104-
| `GITHUB_MODEL_VENDOR` | No | Model vendor as defined by the `vendor` field in `engine.yaml` (e.g. `Anthropic`, `OpenAI`). Only set when model selection is enabled. |
106+
| `GITHUB_MODEL_VENDORS` | No | JSON array of model vendors as defined by the `vendors` field in `engine.yaml` (e.g. `["Anthropic","OpenAI"]`). Only set when model selection is enabled. |
105107

106108
## Step 2: Fetch Job Details
107109

@@ -157,7 +159,7 @@ Headers:
157159
"selected_model": "claude-sonnet-4.5",
158160
"default_model": "claude-sonnet-4.5",
159161
"available_models": ["claude-sonnet-4.5", "claude-opus-4.1"],
160-
"model_vendor": "Anthropic",
162+
"model_vendors": ["Anthropic"],
161163
"mcp_proxy_url": "http://127.0.0.1:2301"
162164
}
163165
```
@@ -176,7 +178,7 @@ Headers:
176178
| `selected_model` | Model selected by the platform for this run. Present when `features.model_selection` is `true`. |
177179
| `default_model` | Default model for the selected engine. Present when `features.model_selection` is `true`. |
178180
| `available_models` | List of models the engine can choose from. Present when `features.model_selection` is `true`. |
179-
| `model_vendor` | Model vendor as defined by the `vendor` field in `engine.yaml` (e.g. `Anthropic`, `OpenAI`). Present when `features.model_selection` is `true`. |
181+
| `model_vendors` | List of model vendors as defined by the `vendors` field in `engine.yaml` (e.g. `["Anthropic", "OpenAI"]`). Present when `features.model_selection` is `true`. |
180182
| `mcp_proxy_url` | Optional URL of the MCP proxy server. When present, use it to discover user-provided MCP servers. See [User-Provided MCP Servers](#user-provided-mcp-servers). |
181183

182184
Use `GITHUB_INFERENCE_TOKEN` for model calls and `GITHUB_GIT_TOKEN` for git operations; those are bootstrap action inputs, not job response fields.

src/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,8 @@ export interface JobDetails {
491491
default_model?: string;
492492
/** Models the engine can choose from. Present when model selection is enabled. */
493493
available_models?: string[];
494-
/** Model vendor for filtering (e.g. "Anthropic", "OpenAI"). Present when model selection is enabled. */
495-
model_vendor?: string;
494+
/** Model vendors for filtering (e.g. ["Anthropic", "OpenAI"]). Present when model selection is enabled. */
495+
model_vendors?: string[];
496496
/** Feature flags enabled for this job. */
497497
features?: {
498498
/** Whether the platform has enabled model selection for this job. */

0 commit comments

Comments
 (0)