Skip to content

Commit 67f933c

Browse files
feat(api): add support for Managed Agents event delta streaming, agent overrides, reverse pagination, vault credential injection scoping, and agent and deployment webhook events
1 parent 4e57f7b commit 67f933c

102 files changed

Lines changed: 13356 additions & 754 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 115
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic/anthropic-ed429f921ae13f649470739c70d49934697c66772ec7faf3d31855abf74b3822.yml
3-
openapi_spec_hash: dfb43b7fe36746f3e867031cb37e64ab
4-
config_hash: 7315b549547ccd1891c7fe53f6a1796a
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/anthropic/anthropic-dffbd6e37f0be6d218800cdb283e5ad958c715021986d788e10c89c0a80a9f44.yml
3+
openapi_spec_hash: 753042938edfcbf43eb60c63c3369a30
4+
config_hash: 2fc184efddefac872a2f58876711b4f5

examples/ManagedAgentsComprehensiveExample/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
{
152152
Agent = new BetaManagedAgentsAgentParams
153153
{
154-
Type = global::Anthropic.Models.Beta.Sessions.Type.Agent,
154+
Type = global::Anthropic.Models.Beta.Sessions.BetaManagedAgentsAgentParamsType.Agent,
155155
ID = agent.ID,
156156
Version = agent.Version,
157157
},

src/Anthropic.Tests/Models/Beta/Deployments/DeploymentCreateParamsTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ public void BetaManagedAgentsAgentParamsValidationWorks()
446446
Agent value = new Sessions::BetaManagedAgentsAgentParams()
447447
{
448448
ID = "x",
449-
Type = Sessions::Type.Agent,
449+
Type = Sessions::BetaManagedAgentsAgentParamsType.Agent,
450450
Version = 0,
451451
};
452452
value.Validate();
@@ -468,7 +468,7 @@ public void BetaManagedAgentsAgentParamsSerializationRoundtripWorks()
468468
Agent value = new Sessions::BetaManagedAgentsAgentParams()
469469
{
470470
ID = "x",
471-
Type = Sessions::Type.Agent,
471+
Type = Sessions::BetaManagedAgentsAgentParamsType.Agent,
472472
Version = 0,
473473
};
474474
string element = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);

src/Anthropic.Tests/Models/Beta/Deployments/DeploymentUpdateParamsTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ public void BetaManagedAgentsAgentParamsValidationWorks()
410410
DeploymentUpdateParamsAgent value = new Sessions::BetaManagedAgentsAgentParams()
411411
{
412412
ID = "x",
413-
Type = Sessions::Type.Agent,
413+
Type = Sessions::BetaManagedAgentsAgentParamsType.Agent,
414414
Version = 0,
415415
};
416416
value.Validate();
@@ -435,7 +435,7 @@ public void BetaManagedAgentsAgentParamsSerializationRoundtripWorks()
435435
DeploymentUpdateParamsAgent value = new Sessions::BetaManagedAgentsAgentParams()
436436
{
437437
ID = "x",
438-
Type = Sessions::Type.Agent,
438+
Type = Sessions::BetaManagedAgentsAgentParamsType.Agent,
439439
Version = 0,
440440
};
441441
string element = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);

src/Anthropic.Tests/Models/Beta/Environments/Work/BetaSelfHostedWorkListResponseTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public void FieldRoundtrip_Works()
2323
EnvironmentID = "environment_id",
2424
LatestHeartbeatAt = "latest_heartbeat_at",
2525
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
26+
Secret = "secret",
2627
StartedAt = "started_at",
2728
State = State.Queued,
2829
StopRequestedAt = "stop_requested_at",
@@ -43,6 +44,7 @@ public void FieldRoundtrip_Works()
4344
EnvironmentID = "environment_id",
4445
LatestHeartbeatAt = "latest_heartbeat_at",
4546
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
47+
Secret = "secret",
4648
StartedAt = "started_at",
4749
State = State.Queued,
4850
StopRequestedAt = "stop_requested_at",
@@ -75,6 +77,7 @@ public void SerializationRoundtrip_Works()
7577
EnvironmentID = "environment_id",
7678
LatestHeartbeatAt = "latest_heartbeat_at",
7779
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
80+
Secret = "secret",
7881
StartedAt = "started_at",
7982
State = State.Queued,
8083
StopRequestedAt = "stop_requested_at",
@@ -109,6 +112,7 @@ public void FieldRoundtripThroughSerialization_Works()
109112
EnvironmentID = "environment_id",
110113
LatestHeartbeatAt = "latest_heartbeat_at",
111114
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
115+
Secret = "secret",
112116
StartedAt = "started_at",
113117
State = State.Queued,
114118
StopRequestedAt = "stop_requested_at",
@@ -136,6 +140,7 @@ public void FieldRoundtripThroughSerialization_Works()
136140
EnvironmentID = "environment_id",
137141
LatestHeartbeatAt = "latest_heartbeat_at",
138142
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
143+
Secret = "secret",
139144
StartedAt = "started_at",
140145
State = State.Queued,
141146
StopRequestedAt = "stop_requested_at",
@@ -168,6 +173,7 @@ public void Validation_Works()
168173
EnvironmentID = "environment_id",
169174
LatestHeartbeatAt = "latest_heartbeat_at",
170175
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
176+
Secret = "secret",
171177
StartedAt = "started_at",
172178
State = State.Queued,
173179
StopRequestedAt = "stop_requested_at",
@@ -196,6 +202,7 @@ public void CopyConstructor_Works()
196202
EnvironmentID = "environment_id",
197203
LatestHeartbeatAt = "latest_heartbeat_at",
198204
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
205+
Secret = "secret",
199206
StartedAt = "started_at",
200207
State = State.Queued,
201208
StopRequestedAt = "stop_requested_at",

src/Anthropic.Tests/Models/Beta/Environments/Work/BetaSelfHostedWorkTest.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public void FieldRoundtrip_Works()
2020
EnvironmentID = "environment_id",
2121
LatestHeartbeatAt = "latest_heartbeat_at",
2222
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
23+
Secret = "secret",
2324
StartedAt = "started_at",
2425
State = State.Queued,
2526
StopRequestedAt = "stop_requested_at",
@@ -33,6 +34,7 @@ public void FieldRoundtrip_Works()
3334
string expectedEnvironmentID = "environment_id";
3435
string expectedLatestHeartbeatAt = "latest_heartbeat_at";
3536
Dictionary<string, string> expectedMetadata = new() { { "foo", "string" } };
37+
string expectedSecret = "secret";
3638
string expectedStartedAt = "started_at";
3739
ApiEnum<string, State> expectedState = State.Queued;
3840
string expectedStopRequestedAt = "stop_requested_at";
@@ -52,6 +54,7 @@ public void FieldRoundtrip_Works()
5254

5355
Assert.Equal(value, model.Metadata[item.Key]);
5456
}
57+
Assert.Equal(expectedSecret, model.Secret);
5558
Assert.Equal(expectedStartedAt, model.StartedAt);
5659
Assert.Equal(expectedState, model.State);
5760
Assert.Equal(expectedStopRequestedAt, model.StopRequestedAt);
@@ -71,6 +74,7 @@ public void SerializationRoundtrip_Works()
7174
EnvironmentID = "environment_id",
7275
LatestHeartbeatAt = "latest_heartbeat_at",
7376
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
77+
Secret = "secret",
7478
StartedAt = "started_at",
7579
State = State.Queued,
7680
StopRequestedAt = "stop_requested_at",
@@ -98,6 +102,7 @@ public void FieldRoundtripThroughSerialization_Works()
98102
EnvironmentID = "environment_id",
99103
LatestHeartbeatAt = "latest_heartbeat_at",
100104
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
105+
Secret = "secret",
101106
StartedAt = "started_at",
102107
State = State.Queued,
103108
StopRequestedAt = "stop_requested_at",
@@ -118,6 +123,7 @@ public void FieldRoundtripThroughSerialization_Works()
118123
string expectedEnvironmentID = "environment_id";
119124
string expectedLatestHeartbeatAt = "latest_heartbeat_at";
120125
Dictionary<string, string> expectedMetadata = new() { { "foo", "string" } };
126+
string expectedSecret = "secret";
121127
string expectedStartedAt = "started_at";
122128
ApiEnum<string, State> expectedState = State.Queued;
123129
string expectedStopRequestedAt = "stop_requested_at";
@@ -137,6 +143,7 @@ public void FieldRoundtripThroughSerialization_Works()
137143

138144
Assert.Equal(value, deserialized.Metadata[item.Key]);
139145
}
146+
Assert.Equal(expectedSecret, deserialized.Secret);
140147
Assert.Equal(expectedStartedAt, deserialized.StartedAt);
141148
Assert.Equal(expectedState, deserialized.State);
142149
Assert.Equal(expectedStopRequestedAt, deserialized.StopRequestedAt);
@@ -156,6 +163,7 @@ public void Validation_Works()
156163
EnvironmentID = "environment_id",
157164
LatestHeartbeatAt = "latest_heartbeat_at",
158165
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
166+
Secret = "secret",
159167
StartedAt = "started_at",
160168
State = State.Queued,
161169
StopRequestedAt = "stop_requested_at",
@@ -177,6 +185,7 @@ public void CopyConstructor_Works()
177185
EnvironmentID = "environment_id",
178186
LatestHeartbeatAt = "latest_heartbeat_at",
179187
Metadata = new Dictionary<string, string>() { { "foo", "string" } },
188+
Secret = "secret",
180189
StartedAt = "started_at",
181190
State = State.Queued,
182191
StopRequestedAt = "stop_requested_at",
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
using System.Text.Json;
2+
using Anthropic.Core;
3+
using Anthropic.Exceptions;
4+
using Anthropic.Models.Beta.Sessions;
5+
6+
namespace Anthropic.Tests.Models.Beta.Sessions;
7+
8+
public class BetaManagedAgentsAgentMessagePreviewTest : TestBase
9+
{
10+
[Fact]
11+
public void FieldRoundtrip_Works()
12+
{
13+
var model = new BetaManagedAgentsAgentMessagePreview
14+
{
15+
ID = "id",
16+
Type = Type.AgentMessage,
17+
};
18+
19+
string expectedID = "id";
20+
ApiEnum<string, Type> expectedType = Type.AgentMessage;
21+
22+
Assert.Equal(expectedID, model.ID);
23+
Assert.Equal(expectedType, model.Type);
24+
}
25+
26+
[Fact]
27+
public void SerializationRoundtrip_Works()
28+
{
29+
var model = new BetaManagedAgentsAgentMessagePreview
30+
{
31+
ID = "id",
32+
Type = Type.AgentMessage,
33+
};
34+
35+
string json = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
36+
var deserialized = JsonSerializer.Deserialize<BetaManagedAgentsAgentMessagePreview>(
37+
json,
38+
ModelBase.SerializerOptions
39+
);
40+
41+
Assert.Equal(model, deserialized);
42+
}
43+
44+
[Fact]
45+
public void FieldRoundtripThroughSerialization_Works()
46+
{
47+
var model = new BetaManagedAgentsAgentMessagePreview
48+
{
49+
ID = "id",
50+
Type = Type.AgentMessage,
51+
};
52+
53+
string element = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
54+
var deserialized = JsonSerializer.Deserialize<BetaManagedAgentsAgentMessagePreview>(
55+
element,
56+
ModelBase.SerializerOptions
57+
);
58+
Assert.NotNull(deserialized);
59+
60+
string expectedID = "id";
61+
ApiEnum<string, Type> expectedType = Type.AgentMessage;
62+
63+
Assert.Equal(expectedID, deserialized.ID);
64+
Assert.Equal(expectedType, deserialized.Type);
65+
}
66+
67+
[Fact]
68+
public void Validation_Works()
69+
{
70+
var model = new BetaManagedAgentsAgentMessagePreview
71+
{
72+
ID = "id",
73+
Type = Type.AgentMessage,
74+
};
75+
76+
model.Validate();
77+
}
78+
79+
[Fact]
80+
public void CopyConstructor_Works()
81+
{
82+
var model = new BetaManagedAgentsAgentMessagePreview
83+
{
84+
ID = "id",
85+
Type = Type.AgentMessage,
86+
};
87+
88+
BetaManagedAgentsAgentMessagePreview copied = new(model);
89+
90+
Assert.Equal(model, copied);
91+
}
92+
}
93+
94+
public class TypeTest : TestBase
95+
{
96+
[Theory]
97+
[InlineData(Type.AgentMessage)]
98+
public void Validation_Works(Type rawValue)
99+
{
100+
// force implicit conversion because Theory can't do that for us
101+
ApiEnum<string, Type> value = rawValue;
102+
value.Validate();
103+
}
104+
105+
[Fact]
106+
public void InvalidEnumValidationThrows_Works()
107+
{
108+
var value = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
109+
JsonSerializer.SerializeToElement("invalid value"),
110+
ModelBase.SerializerOptions
111+
);
112+
113+
Assert.NotNull(value);
114+
Assert.Throws<AnthropicInvalidDataException>(() => value.Validate());
115+
}
116+
117+
[Theory]
118+
[InlineData(Type.AgentMessage)]
119+
public void SerializationRoundtrip_Works(Type rawValue)
120+
{
121+
// force implicit conversion because Theory can't do that for us
122+
ApiEnum<string, Type> value = rawValue;
123+
124+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
125+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
126+
json,
127+
ModelBase.SerializerOptions
128+
);
129+
130+
Assert.Equal(value, deserialized);
131+
}
132+
133+
[Fact]
134+
public void InvalidEnumSerializationRoundtrip_Works()
135+
{
136+
var value = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
137+
JsonSerializer.SerializeToElement("invalid value"),
138+
ModelBase.SerializerOptions
139+
);
140+
string json = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
141+
var deserialized = JsonSerializer.Deserialize<ApiEnum<string, Type>>(
142+
json,
143+
ModelBase.SerializerOptions
144+
);
145+
146+
Assert.Equal(value, deserialized);
147+
}
148+
}

0 commit comments

Comments
 (0)