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
2 changes: 1 addition & 1 deletion .claude/skills/tryagi-openai/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ Use Uploads to upload large files in multiple parts.
| `list-vaults` | `GET /vaults` | List vaults |
| `retrieve-vault` | `GET /vaults/{vault_id}` | Retrieve a vault |
| `retrieve-vault-credential` | `GET /vaults/{vault_id}/credentials/{credential_id}` | Retrieve a vault credential |
| `rotate-vault-credential` | `POST /vaults/{vault_id}/credentials/{credential_id}` | Rotate a vault credential |
| `rotate-vault-credential` | `POST /vaults/{vault_id}/credentials/{credential_id}` | Update a vault credential |

## `vector-store`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,28 @@ internal static partial class VaultsCreateVaultCredentialCommandApiCommand
Required = true,
};

private static Option<global::System.Collections.Generic.Dictionary<string, string>?> Metadata { get; } = new(
name: @"--metadata")
{
Description = @"Up to 16 string key-value pairs, with keys up to 64 and values up to 512 characters. Defaults to an empty map.",
};
private static Option<string?> Input { get; } = new(@"--input")
{
Description = "Load request JSON from a file path, '-' for stdin, or an inline JSON object/array string.",
};

private static Option<string?> RequestJson { get; } = new(@"--request-json")
{
Description = "Request body as JSON.",
Hidden = true,
};

private static Option<string?> RequestFile { get; } = new(@"--request-file")
{
Description = "Path to a JSON request file, or '-' for stdin.",
Hidden = true,
};

private static string FormatResponse(ParseResult parseResult, global::tryAGI.OpenAI.VaultCredentialResource value, global::System.Text.Json.Serialization.JsonSerializerContext context, bool truncateLongStrings)
{
string? text = null;
Expand Down Expand Up @@ -54,21 +76,44 @@ public static Command Create()
command.Arguments.Add(VaultId);
command.Options.Add(NameOption);
command.Options.Add(Auth);

command.Options.Add(Metadata);
command.Options.Add(Input);
command.Options.Add(RequestJson);
command.Options.Add(RequestFile);
command.Validators.Add(result =>
{
var hasInput = result.GetResult(Input) is not null;
var hasRequestJson = result.GetResult(RequestJson) is not null;
var hasRequestFile = result.GetResult(RequestFile) is not null;
var specifiedCount = (hasInput ? 1 : 0) + (hasRequestJson ? 1 : 0) + (hasRequestFile ? 1 : 0);
if (specifiedCount > 1)
{
result.AddError(@"Specify at most one of --input, --request-json, or --request-file.");
}
});

command.SetAction(async (ParseResult parseResult, CancellationToken cancellationToken) =>
await CliRuntime.RunAsync(async () =>
{
var __requestBase = await CliRuntime.ReadRequestOrDefaultAsync<global::tryAGI.OpenAI.CreateVaultCredentialParams>(
parseResult,
Input,
RequestJson,
RequestFile,
global::tryAGI.OpenAI.SourceGenerationContext.Default,
cancellationToken).ConfigureAwait(false);
var vaultId = parseResult.GetRequiredValue(VaultId);
var name = parseResult.GetRequiredValue(NameOption);
var auth = parseResult.GetRequiredValue(Auth);
var metadata = CliRuntime.WasSpecified(parseResult, Metadata) ? parseResult.GetValue(Metadata) : (__requestBase is { } __MetadataBaseValue ? __MetadataBaseValue.Metadata : default);
using var client = await CliRuntime.CreateClientAsync(parseResult, cancellationToken).ConfigureAwait(false);


var response = await client.Vaults.CreateVaultCredentialAsync(
vaultId: vaultId,
name: name,
auth: auth,
metadata: metadata,
cancellationToken: cancellationToken).ConfigureAwait(false);


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,34 @@ internal static partial class VaultsRotateVaultCredentialCommandApiCommand
Description = @"The ID of the vault credential.",
};

private static Option<global::tryAGI.OpenAI.RotateVaultCredentialAuthParam> Auth { get; } = new(
private static Option<global::tryAGI.OpenAI.RotateVaultCredentialAuthParam?> Auth { get; } = new(
name: @"--auth")
{
Description = @"Replacement values for the credential's existing authentication method.",
Required = true,
};

private static Option<global::System.Collections.Generic.Dictionary<string, string>?> Metadata { get; } = new(
name: @"--metadata")
{
Description = @"Replaces all metadata. Omit to preserve it, or pass {} to clear it. Up to 16 string key-value pairs, with keys up to 64 and values up to 512 characters.",
};
private static Option<string?> Input { get; } = new(@"--input")
{
Description = "Load request JSON from a file path, '-' for stdin, or an inline JSON object/array string.",
};

private static Option<string?> RequestJson { get; } = new(@"--request-json")
{
Description = "Request body as JSON.",
Hidden = true,
};

private static Option<string?> RequestFile { get; } = new(@"--request-file")
{
Description = "Path to a JSON request file, or '-' for stdin.",
Hidden = true,
};

private static string FormatResponse(ParseResult parseResult, global::tryAGI.OpenAI.VaultCredentialResource value, global::System.Text.Json.Serialization.JsonSerializerContext context, bool truncateLongStrings)
{
string? text = null;
Expand All @@ -48,26 +69,49 @@ private static string FormatResponse(ParseResult parseResult, global::tryAGI.Ope

public static Command Create()
{
var command = new Command(@"rotate-vault-credential", @"Rotate a vault credential
Rotates a vault credential's write-only secret and returns only credential metadata. See [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).");
var command = new Command(@"rotate-vault-credential", @"Update a vault credential
Updates credential metadata or rotates its write-only secret. See [vaults](https://developers.openai.com/api/docs/guides/agents-api/tools/vaults).");
command.Arguments.Add(VaultId);
command.Arguments.Add(CredentialId);
command.Options.Add(Auth);

command.Options.Add(Metadata);
command.Options.Add(Input);
command.Options.Add(RequestJson);
command.Options.Add(RequestFile);
command.Validators.Add(result =>
{
var hasInput = result.GetResult(Input) is not null;
var hasRequestJson = result.GetResult(RequestJson) is not null;
var hasRequestFile = result.GetResult(RequestFile) is not null;
var specifiedCount = (hasInput ? 1 : 0) + (hasRequestJson ? 1 : 0) + (hasRequestFile ? 1 : 0);
if (specifiedCount > 1)
{
result.AddError(@"Specify at most one of --input, --request-json, or --request-file.");
}
});

command.SetAction(async (ParseResult parseResult, CancellationToken cancellationToken) =>
await CliRuntime.RunAsync(async () =>
{
var __requestBase = await CliRuntime.ReadRequestOrDefaultAsync<global::tryAGI.OpenAI.RotateVaultCredentialParams>(
parseResult,
Input,
RequestJson,
RequestFile,
global::tryAGI.OpenAI.SourceGenerationContext.Default,
cancellationToken).ConfigureAwait(false);
var vaultId = parseResult.GetRequiredValue(VaultId);
var credentialId = parseResult.GetRequiredValue(CredentialId);
var auth = parseResult.GetRequiredValue(Auth);
var auth = CliRuntime.WasSpecified(parseResult, Auth) ? parseResult.GetValue(Auth) : (__requestBase is { } __AuthBaseValue ? __AuthBaseValue.Auth : default);
var metadata = CliRuntime.WasSpecified(parseResult, Metadata) ? parseResult.GetValue(Metadata) : (__requestBase is { } __MetadataBaseValue ? __MetadataBaseValue.Metadata : default);
using var client = await CliRuntime.CreateClientAsync(parseResult, cancellationToken).ConfigureAwait(false);


var response = await client.Vaults.RotateVaultCredentialAsync(
vaultId: vaultId,
credentialId: credentialId,
auth: auth,
metadata: metadata,
cancellationToken: cancellationToken).ConfigureAwait(false);


Expand Down
Loading
Loading