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 @@ -599,7 +599,7 @@ partial void ProcessPublishResponseContent(
h => h.Key,
h => h.Value));
}
// The publish gate refused the publish (`agent_publish_gate_failed`): the configuration did not pass its behavioral and/or adversarial red-team checks. `error.details` carries the verdict (per-case, per-criterion). Correct the agent and publish again, or publish with a recorded `gate_override_reason`.
// The publish gate refused the publish, on one of two codes the caller can FIX (neither is waited out): - `agent_publish_gate_failed`: the configuration did not pass its behavioral and/or adversarial red-team checks. `error.details` carries the verdict (per-case, per-criterion). Correct the agent and publish again, or publish with a recorded `gate_override_reason`. - `agent_publish_gate_tool_unreachable`: the checks never ran because a tool the agent is attached to could not be reached. Nothing about the agent was judged, and no retry helps while the endpoint is down; `error.message` names the tool, the endpoint and the reason. Fix or detach the connector, then publish again. The one publish failure that IS waited out is the `503`.
if ((int)__response.StatusCode == 422)
{
string? __content_422 = null;
Expand Down Expand Up @@ -673,7 +673,7 @@ partial void ProcessPublishResponseContent(
h => h.Key,
h => h.Value));
}
// The publish checks could not run (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the agent was judged. Not a verdict on the configuration; retry after `Retry-After`. `error.details` lists the probes that could not run.
// The publish checks could not run (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the agent was judged. This is OURS, and the only publish failure a caller waits out: not a verdict on the configuration, retry after `Retry-After`. `error.details` lists the probes that could not run. A check that could not run because of the agent's own configuration is the `422 agent_publish_gate_tool_unreachable` instead.
if ((int)__response.StatusCode == 503)
{
string? __content_503 = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ partial void ProcessPublishResponseContent(
h => h.Key,
h => h.Value));
}
// The behavioral-eval publish gate refused the publish (`agent_publish_gate_failed`): the agent's configured suite did not pass. `error.details` carries the verdict (per-case, per-criterion).
// The behavioral-eval publish gate refused the publish, on one of two codes the caller can FIX (neither is waited out): - `agent_publish_gate_failed`: the agent's configured suite did not pass. `error.details` carries the verdict (per-case, per-criterion). - `agent_publish_gate_tool_unreachable`: the checks never ran because a tool the agent is attached to could not be reached. Nothing was judged, and no retry helps while the endpoint is down; `error.message` names the tool, the endpoint and the reason. The one publish failure that IS waited out is the `503`.
if ((int)__response.StatusCode == 422)
{
string? __content_422 = null;
Expand Down Expand Up @@ -583,7 +583,7 @@ partial void ProcessPublishResponseContent(
h => h.Key,
h => h.Value));
}
// The publish checks could not run (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the agent was judged. Not a verdict on the configuration; retry after `Retry-After`. `error.details` lists the cases that could not run.
// The publish checks could not run (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the agent was judged. This is OURS, and the only publish failure a caller waits out: not a verdict on the configuration, retry after `Retry-After`. `error.details` lists the cases that could not run. A check that could not run because of the agent's own configuration is the `422 agent_publish_gate_tool_unreachable` instead.
if ((int)__response.StatusCode == 503)
{
string? __content_503 = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ partial void ProcessRollbackResponseContent(
h => h.Key,
h => h.Value));
}
// The behavioral-eval publish gate refused the rollback (`agent_publish_gate_failed`): the target version did not pass the agent's configured suite. `error.details` carries the verdict.
// The behavioral-eval publish gate refused the rollback, on one of two codes the caller can FIX (neither is waited out): - `agent_publish_gate_failed`: the target version did not pass the agent's configured suite. `error.details` carries the verdict. - `agent_publish_gate_tool_unreachable`: the checks never ran because a tool the agent is attached to could not be reached; `error.message` names the tool, the endpoint and the reason. The one rollback failure that IS waited out is the `503`.
if ((int)__response.StatusCode == 422)
{
string? __content_422 = null;
Expand Down Expand Up @@ -546,7 +546,7 @@ partial void ProcessRollbackResponseContent(
h => h.Key,
h => h.Value));
}
// The gate's checks could not run on the rollback target (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the version was judged. Not a verdict on it; retry after `Retry-After`. `error.details` lists the cases that could not run.
// The gate's checks could not run on the rollback target (`agent_publish_gate_unavailable`): the eval worker, the judge or the probe corpus errored, so nothing about the version was judged. This is OURS, and the only rollback failure a caller waits out: not a verdict on it, retry after `Retry-After`. `error.details` lists the cases that could not run. A check that could not run because of the agent's own configuration is the `422 agent_publish_gate_tool_unreachable` instead.
if ((int)__response.StatusCode == 503)
{
string? __content_503 = null;
Expand Down
90 changes: 72 additions & 18 deletions src/libs/Speechify/Generated/Speechify.IProjectsClient.Delete.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,22 @@ public partial interface IProjectsClient
{
/// <summary>
/// Delete Project<br/>
/// Delete a project in one of two modes.<br/>
/// **Detach** (the default, no body or `mode: detach`): only the<br/>
/// grouping row is removed; every resource in the project moves to the<br/>
/// implicit Default project. Refused with 409<br/>
/// Delete a project. With no body it deletes a project that holds<br/>
/// nothing, and refuses one that does; `mode` is how you say what should<br/>
/// happen to what it holds.<br/>
/// **Empty** (no body): the project is removed only while it holds no<br/>
/// resources. A project that holds any is refused with 409<br/>
/// `project_not_empty`, and the refusal enumerates what is inside:<br/>
/// `error.details.resource_count` is the total, and<br/>
/// `error.details.contents` names each kind with a count and up to five<br/>
/// names. Every project row also carries that total as `resource_count`,<br/>
/// so an application can find the projects it may delete in one list<br/>
/// call. Records of work - conversations, runs, calls, callers, memories<br/>
/// - never hold a project open and are not counted.<br/>
/// **Detach** (`mode: detach`): only the grouping row is removed; every<br/>
/// resource in the project moves to the implicit Default project, where<br/>
/// it stays readable and is listed by `?project_id=default`. This is what<br/>
/// an unqualified delete used to do silently. Refused with 409<br/>
/// `project_has_scoped_credentials` while an API key, service account,<br/>
/// vault credential, webhook endpoint, member grant or pending invite is<br/>
/// scoped to the project, because detaching any of those would silently<br/>
Expand All @@ -31,7 +43,13 @@ public partial interface IProjectsClient
/// memories are operational records and survive either mode, moving to<br/>
/// the Default project; a batch call survives the project the same way,<br/>
/// but not the agent it dialled for, so a purge's agents take their<br/>
/// campaigns with them once they are permanently removed. Refused with 409 while a phone number is attached<br/>
/// campaigns with them once they are permanently removed. External brains,<br/>
/// skills, teams, channels, stores, hosted APIs and files are resources<br/>
/// with their own lifecycle and their own delete, so a purge does NOT<br/>
/// remove them either: they move to the Default project too, the teardown<br/>
/// preview lists every one of them under `retains`, and because they DO<br/>
/// hold a project open an unqualified delete refuses while any of them is<br/>
/// in the project. Refused with 409 while a phone number is attached<br/>
/// (release or move it first), while a member's only project grant is<br/>
/// this one, or while a live invite carries only this project (clearing<br/>
/// either would widen that person to the whole workspace, the invite one<br/>
Expand Down Expand Up @@ -64,10 +82,22 @@ public partial interface IProjectsClient
global::System.Threading.CancellationToken cancellationToken = default);
/// <summary>
/// Delete Project<br/>
/// Delete a project in one of two modes.<br/>
/// **Detach** (the default, no body or `mode: detach`): only the<br/>
/// grouping row is removed; every resource in the project moves to the<br/>
/// implicit Default project. Refused with 409<br/>
/// Delete a project. With no body it deletes a project that holds<br/>
/// nothing, and refuses one that does; `mode` is how you say what should<br/>
/// happen to what it holds.<br/>
/// **Empty** (no body): the project is removed only while it holds no<br/>
/// resources. A project that holds any is refused with 409<br/>
/// `project_not_empty`, and the refusal enumerates what is inside:<br/>
/// `error.details.resource_count` is the total, and<br/>
/// `error.details.contents` names each kind with a count and up to five<br/>
/// names. Every project row also carries that total as `resource_count`,<br/>
/// so an application can find the projects it may delete in one list<br/>
/// call. Records of work - conversations, runs, calls, callers, memories<br/>
/// - never hold a project open and are not counted.<br/>
/// **Detach** (`mode: detach`): only the grouping row is removed; every<br/>
/// resource in the project moves to the implicit Default project, where<br/>
/// it stays readable and is listed by `?project_id=default`. This is what<br/>
/// an unqualified delete used to do silently. Refused with 409<br/>
/// `project_has_scoped_credentials` while an API key, service account,<br/>
/// vault credential, webhook endpoint, member grant or pending invite is<br/>
/// scoped to the project, because detaching any of those would silently<br/>
Expand All @@ -89,7 +119,13 @@ public partial interface IProjectsClient
/// memories are operational records and survive either mode, moving to<br/>
/// the Default project; a batch call survives the project the same way,<br/>
/// but not the agent it dialled for, so a purge's agents take their<br/>
/// campaigns with them once they are permanently removed. Refused with 409 while a phone number is attached<br/>
/// campaigns with them once they are permanently removed. External brains,<br/>
/// skills, teams, channels, stores, hosted APIs and files are resources<br/>
/// with their own lifecycle and their own delete, so a purge does NOT<br/>
/// remove them either: they move to the Default project too, the teardown<br/>
/// preview lists every one of them under `retains`, and because they DO<br/>
/// hold a project open an unqualified delete refuses while any of them is<br/>
/// in the project. Refused with 409 while a phone number is attached<br/>
/// (release or move it first), while a member's only project grant is<br/>
/// this one, or while a live invite carries only this project (clearing<br/>
/// either would widen that person to the whole workspace, the invite one<br/>
Expand Down Expand Up @@ -122,10 +158,22 @@ public partial interface IProjectsClient
global::System.Threading.CancellationToken cancellationToken = default);
/// <summary>
/// Delete Project<br/>
/// Delete a project in one of two modes.<br/>
/// **Detach** (the default, no body or `mode: detach`): only the<br/>
/// grouping row is removed; every resource in the project moves to the<br/>
/// implicit Default project. Refused with 409<br/>
/// Delete a project. With no body it deletes a project that holds<br/>
/// nothing, and refuses one that does; `mode` is how you say what should<br/>
/// happen to what it holds.<br/>
/// **Empty** (no body): the project is removed only while it holds no<br/>
/// resources. A project that holds any is refused with 409<br/>
/// `project_not_empty`, and the refusal enumerates what is inside:<br/>
/// `error.details.resource_count` is the total, and<br/>
/// `error.details.contents` names each kind with a count and up to five<br/>
/// names. Every project row also carries that total as `resource_count`,<br/>
/// so an application can find the projects it may delete in one list<br/>
/// call. Records of work - conversations, runs, calls, callers, memories<br/>
/// - never hold a project open and are not counted.<br/>
/// **Detach** (`mode: detach`): only the grouping row is removed; every<br/>
/// resource in the project moves to the implicit Default project, where<br/>
/// it stays readable and is listed by `?project_id=default`. This is what<br/>
/// an unqualified delete used to do silently. Refused with 409<br/>
/// `project_has_scoped_credentials` while an API key, service account,<br/>
/// vault credential, webhook endpoint, member grant or pending invite is<br/>
/// scoped to the project, because detaching any of those would silently<br/>
Expand All @@ -147,7 +195,13 @@ public partial interface IProjectsClient
/// memories are operational records and survive either mode, moving to<br/>
/// the Default project; a batch call survives the project the same way,<br/>
/// but not the agent it dialled for, so a purge's agents take their<br/>
/// campaigns with them once they are permanently removed. Refused with 409 while a phone number is attached<br/>
/// campaigns with them once they are permanently removed. External brains,<br/>
/// skills, teams, channels, stores, hosted APIs and files are resources<br/>
/// with their own lifecycle and their own delete, so a purge does NOT<br/>
/// remove them either: they move to the Default project too, the teardown<br/>
/// preview lists every one of them under `retains`, and because they DO<br/>
/// hold a project open an unqualified delete refuses while any of them is<br/>
/// in the project. Refused with 409 while a phone number is attached<br/>
/// (release or move it first), while a member's only project grant is<br/>
/// this one, or while a live invite carries only this project (clearing<br/>
/// either would widen that person to the whole workspace, the invite one<br/>
Expand All @@ -168,9 +222,9 @@ public partial interface IProjectsClient
/// <param name="projectId"></param>
/// <param name="speechifyVersion"></param>
/// <param name="mode">
/// `detach` removes the grouping row only; `purge` removes the<br/>
/// project with its contents.<br/>
/// Default Value: detach
/// `detach` removes the grouping row only and moves every resource<br/>
/// to the Default project; `purge` removes the project with its<br/>
/// contents. Omitted, the delete removes only an empty project.
/// </param>
/// <param name="confirm">
/// Required for `purge`: the project's name, exactly as returned by<br/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#nullable enable

namespace Speechify.JsonConverters
{
/// <inheritdoc />
public sealed class EvaluationCaseVerdictFaultJsonConverter : global::System.Text.Json.Serialization.JsonConverter<global::Speechify.EvaluationCaseVerdictFault>
{
/// <inheritdoc />
public override global::Speechify.EvaluationCaseVerdictFault Read(
ref global::System.Text.Json.Utf8JsonReader reader,
global::System.Type typeToConvert,
global::System.Text.Json.JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case global::System.Text.Json.JsonTokenType.String:
{
var stringValue = reader.GetString();
if (stringValue != null)
{
return global::Speechify.EvaluationCaseVerdictFaultExtensions.ToEnum(stringValue) ?? default;
}

break;
}
case global::System.Text.Json.JsonTokenType.Number:
{
var numValue = reader.GetInt32();
return (global::Speechify.EvaluationCaseVerdictFault)numValue;
}
case global::System.Text.Json.JsonTokenType.Null:
{
return default(global::Speechify.EvaluationCaseVerdictFault);
}
default:
throw new global::System.ArgumentOutOfRangeException(nameof(reader));
}

return default;
}

/// <inheritdoc />
public override void Write(
global::System.Text.Json.Utf8JsonWriter writer,
global::Speechify.EvaluationCaseVerdictFault value,
global::System.Text.Json.JsonSerializerOptions options)
{
writer = writer ?? throw new global::System.ArgumentNullException(nameof(writer));

writer.WriteStringValue(global::Speechify.EvaluationCaseVerdictFaultExtensions.ToValueString(value));
}
}
}
Loading