Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,11 @@ func (c *AgentClient) CreateAgentVersion(ctx context.Context, agentName string,
return nil, fmt.Errorf("failed to create request: %w", err)
}

// Opt-in to the hosted-agents preview feature. The Foundry v1 endpoint
// gates POST /agents/{name}/versions with definition.kind=="hosted" behind
// this header and returns HTTP 403 (preview_feature_required) without it.
req.Raw().Header.Set("Foundry-Features", "HostedAgents=V1Preview")

if err := req.SetBody(streaming.NopCloser(bytes.NewReader(payload)), "application/json"); err != nil {
return nil, fmt.Errorf("failed to set request body: %w", err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -772,3 +772,39 @@ func TestZipDeployRequest_NoAgentNameHeader_OnUpdate(t *testing.T) {
require.Equal(t, "CodeAgents=V1Preview,HostedAgents=V1Preview", transport.lastReq.Header.Get("Foundry-Features"))
require.Equal(t, "sha", transport.lastReq.Header.Get("x-ms-code-zip-sha256"))
}

func TestCreateAgentVersion_SetsHostedAgentsPreviewHeader(t *testing.T) {
// The Foundry v1 endpoint gates POST /agents/{name}/versions on the
// HostedAgents=V1Preview opt-in header and returns 403 preview_feature_required
// without it. Make sure the client always sends the header so callers don't
// silently regress to the pre-v1 (preview-API-version) behavior.
versionResp := `{
"object": "agent.version",
"id": "test-agent:1",
"name": "test-agent",
"version": "1"
}`
transport := &capturingTransport{statusCode: http.StatusCreated, respBody: versionResp}
client := newTestClient("https://test.example.com/api/projects/proj", transport)

desc := "test desc"
req := &CreateAgentVersionRequest{Description: &desc}

_, err := client.CreateAgentVersion(context.Background(), "test-agent", req, "v1")
require.NoError(t, err)

require.NotNil(t, transport.lastReq, "expected request to be captured")
require.Equal(t, http.MethodPost, transport.lastReq.Method)
require.Equal(
t,
"https://test.example.com/api/projects/proj/agents/test-agent/versions",
transport.lastReq.URL.Scheme+"://"+transport.lastReq.URL.Host+transport.lastReq.URL.Path,
)
require.Equal(t, "v1", transport.lastReq.URL.Query().Get("api-version"))
require.Equal(
t,
"HostedAgents=V1Preview",
transport.lastReq.Header.Get("Foundry-Features"),
"CreateAgentVersion must opt in to HostedAgents=V1Preview on the v1 endpoint",
)
}
Loading