chore: import upstream snapshot with attribution
Publish CLI Package / publish-npm (push) Waiting to run
Publish Python SDK / publish-pypi (push) Waiting to run
Publish TypeScript SDK / publish-npm (push) Waiting to run
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:20:55 +08:00
commit d25d482dc2
13754 changed files with 4996608 additions and 0 deletions
@@ -0,0 +1,90 @@
import type {
AppConfigCreateApplicationParams,
AppConfigCreateApplicationResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const createApplicationTool: ToolConfig<
AppConfigCreateApplicationParams,
AppConfigCreateApplicationResponse
> = {
id: 'appconfig_create_application',
name: 'AppConfig Create Application',
description: 'Create an application in AWS AppConfig',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
name: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'Name of the application to create',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Description of the application',
},
},
request: {
url: '/api/tools/appconfig/create-application',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
name: params.name,
description: params.description,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to create AppConfig application')
}
return {
success: true,
output: {
message: data.message ?? '',
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
id: { type: 'string', description: 'ID of the created application' },
name: { type: 'string', description: 'Name of the created application' },
description: {
type: 'string',
description: 'Description of the created application',
optional: true,
},
},
}
@@ -0,0 +1,120 @@
import type {
AppConfigCreateConfigurationProfileParams,
AppConfigCreateConfigurationProfileResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const createConfigurationProfileTool: ToolConfig<
AppConfigCreateConfigurationProfileParams,
AppConfigCreateConfigurationProfileResponse
> = {
id: 'appconfig_create_configuration_profile',
name: 'AppConfig Create Configuration Profile',
description: 'Create a configuration profile in an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to create the configuration profile in',
},
name: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'Name of the configuration profile',
},
locationUri: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description:
'Where the configuration is stored. Use "hosted" for AppConfig-hosted configurations, or an SSM/S3 URI',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Description of the configuration profile',
},
retrievalRoleArn: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description:
'ARN of an IAM role to retrieve the configuration (required for non-hosted URIs)',
},
type: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Profile type: AWS.Freeform (default) or AWS.AppConfig.FeatureFlags',
},
},
request: {
url: '/api/tools/appconfig/create-configuration-profile',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
name: params.name,
locationUri: params.locationUri,
description: params.description,
retrievalRoleArn: params.retrievalRoleArn,
type: params.type,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to create AppConfig configuration profile')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
locationUri: data.locationUri ?? null,
type: data.type ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the created configuration profile' },
name: { type: 'string', description: 'Name of the created configuration profile' },
locationUri: { type: 'string', description: 'Location URI of the config', optional: true },
type: { type: 'string', description: 'Profile type', optional: true },
},
}
@@ -0,0 +1,95 @@
import type {
AppConfigCreateEnvironmentParams,
AppConfigCreateEnvironmentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const createEnvironmentTool: ToolConfig<
AppConfigCreateEnvironmentParams,
AppConfigCreateEnvironmentResponse
> = {
id: 'appconfig_create_environment',
name: 'AppConfig Create Environment',
description: 'Create an environment for an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to create the environment in',
},
name: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'Name of the environment to create',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Description of the environment',
},
},
request: {
url: '/api/tools/appconfig/create-environment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
name: params.name,
description: params.description,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to create AppConfig environment')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
state: data.state ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the created environment' },
name: { type: 'string', description: 'Name of the created environment' },
state: { type: 'string', description: 'State of the created environment', optional: true },
},
}
@@ -0,0 +1,137 @@
import type {
AppConfigCreateHostedConfigurationVersionParams,
AppConfigCreateHostedConfigurationVersionResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const createHostedConfigurationVersionTool: ToolConfig<
AppConfigCreateHostedConfigurationVersionParams,
AppConfigCreateHostedConfigurationVersionResponse
> = {
id: 'appconfig_create_hosted_configuration_version',
name: 'AppConfig Create Hosted Configuration Version',
description: 'Create a new hosted configuration version for an AppConfig configuration profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to add the version to',
},
content: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration content (e.g., a JSON or YAML document)',
},
contentType: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'Content type of the configuration (e.g., application/json, text/plain)',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Description of the configuration version',
},
latestVersionNumber: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'The version number of the latest version, used for optimistic concurrency',
},
versionLabel: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'A user-defined label for the configuration version',
},
},
request: {
url: '/api/tools/appconfig/create-hosted-configuration-version',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
content: params.content,
contentType: params.contentType,
description: params.description,
latestVersionNumber: params.latestVersionNumber,
versionLabel: params.versionLabel,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to create AppConfig hosted configuration version')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
configurationProfileId: data.configurationProfileId ?? '',
versionNumber: data.versionNumber ?? null,
contentType: data.contentType ?? null,
versionLabel: data.versionLabel ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
configurationProfileId: { type: 'string', description: 'Owning configuration profile ID' },
versionNumber: {
type: 'number',
description: 'Version number of the created configuration',
optional: true,
},
contentType: {
type: 'string',
description: 'Content type of the configuration',
optional: true,
},
versionLabel: {
type: 'string',
description: 'Label of the configuration version',
optional: true,
},
},
}
@@ -0,0 +1,75 @@
import type {
AppConfigDeleteApplicationParams,
AppConfigDeleteResourceResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const deleteApplicationTool: ToolConfig<
AppConfigDeleteApplicationParams,
AppConfigDeleteResourceResponse
> = {
id: 'appconfig_delete_application',
name: 'AppConfig Delete Application',
description: 'Delete an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to delete',
},
},
request: {
url: '/api/tools/appconfig/delete-application',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to delete AppConfig application')
}
return {
success: true,
output: {
message: data.message ?? '',
id: data.id ?? '',
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
id: { type: 'string', description: 'ID of the deleted application' },
},
}
@@ -0,0 +1,84 @@
import type {
AppConfigDeleteConfigurationProfileParams,
AppConfigDeleteResourceResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const deleteConfigurationProfileTool: ToolConfig<
AppConfigDeleteConfigurationProfileParams,
AppConfigDeleteResourceResponse
> = {
id: 'appconfig_delete_configuration_profile',
name: 'AppConfig Delete Configuration Profile',
description: 'Delete an AWS AppConfig configuration profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to delete',
},
},
request: {
url: '/api/tools/appconfig/delete-configuration-profile',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to delete AppConfig configuration profile')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the deleted configuration profile' },
},
}
@@ -0,0 +1,84 @@
import type {
AppConfigDeleteEnvironmentParams,
AppConfigDeleteResourceResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const deleteEnvironmentTool: ToolConfig<
AppConfigDeleteEnvironmentParams,
AppConfigDeleteResourceResponse
> = {
id: 'appconfig_delete_environment',
name: 'AppConfig Delete Environment',
description: 'Delete an AWS AppConfig environment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the environment',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID to delete',
},
},
request: {
url: '/api/tools/appconfig/delete-environment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to delete AppConfig environment')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the deleted environment' },
},
}
@@ -0,0 +1,93 @@
import type {
AppConfigDeleteHostedConfigurationVersionParams,
AppConfigDeleteHostedConfigurationVersionResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const deleteHostedConfigurationVersionTool: ToolConfig<
AppConfigDeleteHostedConfigurationVersionParams,
AppConfigDeleteHostedConfigurationVersionResponse
> = {
id: 'appconfig_delete_hosted_configuration_version',
name: 'AppConfig Delete Hosted Configuration Version',
description: 'Delete a specific hosted configuration version from an AppConfig profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID that owns the version',
},
versionNumber: {
type: 'number',
required: true,
visibility: 'user-or-llm',
description: 'The version number to delete',
},
},
request: {
url: '/api/tools/appconfig/delete-hosted-configuration-version',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
versionNumber: params.versionNumber,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to delete AppConfig hosted configuration version')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
configurationProfileId: data.configurationProfileId ?? '',
versionNumber: data.versionNumber ?? 0,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
configurationProfileId: { type: 'string', description: 'Owning configuration profile ID' },
versionNumber: { type: 'number', description: 'Version number that was deleted' },
},
}
@@ -0,0 +1,77 @@
import type {
AppConfigGetApplicationParams,
AppConfigGetApplicationResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getApplicationTool: ToolConfig<
AppConfigGetApplicationParams,
AppConfigGetApplicationResponse
> = {
id: 'appconfig_get_application',
name: 'AppConfig Get Application',
description: 'Get details about a single AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to retrieve',
},
},
request: {
url: '/api/tools/appconfig/get-application',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to get AppConfig application')
}
return {
success: true,
output: {
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
},
}
},
outputs: {
id: { type: 'string', description: 'Application ID' },
name: { type: 'string', description: 'Application name' },
description: { type: 'string', description: 'Application description', optional: true },
},
}
@@ -0,0 +1,100 @@
import type {
AppConfigGetConfigurationParams,
AppConfigGetConfigurationResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getConfigurationTool: ToolConfig<
AppConfigGetConfigurationParams,
AppConfigGetConfigurationResponse
> = {
id: 'appconfig_get_configuration',
name: 'AppConfig Get Configuration',
description:
'Retrieve the latest deployed configuration for an AppConfig application, environment, and profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID or name to retrieve configuration for',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID or name to retrieve configuration for',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID or name to retrieve',
},
},
request: {
url: '/api/tools/appconfig/get-configuration',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
configurationProfileId: params.configurationProfileId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to retrieve AppConfig configuration')
}
return {
success: true,
output: {
configuration: data.configuration ?? '',
contentType: data.contentType ?? null,
versionLabel: data.versionLabel ?? null,
},
}
},
outputs: {
configuration: { type: 'string', description: 'The deployed configuration content' },
contentType: {
type: 'string',
description: 'Content type of the configuration',
optional: true,
},
versionLabel: {
type: 'string',
description: 'Label of the retrieved configuration version',
optional: true,
},
},
}
@@ -0,0 +1,103 @@
import type {
AppConfigGetConfigurationProfileParams,
AppConfigGetConfigurationProfileResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getConfigurationProfileTool: ToolConfig<
AppConfigGetConfigurationProfileParams,
AppConfigGetConfigurationProfileResponse
> = {
id: 'appconfig_get_configuration_profile',
name: 'AppConfig Get Configuration Profile',
description: 'Get details about a single AWS AppConfig configuration profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to retrieve',
},
},
request: {
url: '/api/tools/appconfig/get-configuration-profile',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to get AppConfig configuration profile')
}
return {
success: true,
output: {
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
locationUri: data.locationUri ?? null,
retrievalRoleArn: data.retrievalRoleArn ?? null,
type: data.type ?? null,
validators: data.validators ?? [],
},
}
},
outputs: {
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'Configuration profile ID' },
name: { type: 'string', description: 'Configuration profile name' },
description: { type: 'string', description: 'Profile description', optional: true },
locationUri: { type: 'string', description: 'Location URI of the config', optional: true },
retrievalRoleArn: { type: 'string', description: 'IAM retrieval role ARN', optional: true },
type: { type: 'string', description: 'Profile type (e.g., AWS.Freeform)', optional: true },
validators: {
type: 'array',
description: 'Validators configured on the profile',
items: {
type: 'object',
properties: {
type: { type: 'string', description: 'Validator type (JSON_SCHEMA or LAMBDA)' },
},
},
},
},
}
+109
View File
@@ -0,0 +1,109 @@
import type {
AppConfigGetDeploymentParams,
AppConfigGetDeploymentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getDeploymentTool: ToolConfig<
AppConfigGetDeploymentParams,
AppConfigGetDeploymentResponse
> = {
id: 'appconfig_get_deployment',
name: 'AppConfig Get Deployment',
description: 'Get details about a specific AWS AppConfig deployment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID of the deployment',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID of the deployment',
},
deploymentNumber: {
type: 'number',
required: true,
visibility: 'user-or-llm',
description: 'The sequence number of the deployment',
},
},
request: {
url: '/api/tools/appconfig/get-deployment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
deploymentNumber: params.deploymentNumber,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to get AppConfig deployment')
}
return {
success: true,
output: {
applicationId: data.applicationId ?? '',
environmentId: data.environmentId ?? '',
deploymentStrategyId: data.deploymentStrategyId ?? '',
configurationProfileId: data.configurationProfileId ?? '',
deploymentNumber: data.deploymentNumber ?? null,
configurationName: data.configurationName ?? null,
configurationVersion: data.configurationVersion ?? null,
description: data.description ?? null,
state: data.state ?? null,
percentageComplete: data.percentageComplete ?? null,
startedAt: data.startedAt ?? null,
completedAt: data.completedAt ?? null,
},
}
},
outputs: {
applicationId: { type: 'string', description: 'Application ID' },
environmentId: { type: 'string', description: 'Environment ID' },
deploymentStrategyId: { type: 'string', description: 'Deployment strategy ID' },
configurationProfileId: { type: 'string', description: 'Configuration profile ID' },
deploymentNumber: { type: 'number', description: 'Deployment sequence number', optional: true },
configurationName: { type: 'string', description: 'Configuration name', optional: true },
configurationVersion: { type: 'string', description: 'Configuration version', optional: true },
description: { type: 'string', description: 'Deployment description', optional: true },
state: { type: 'string', description: 'Current deployment state', optional: true },
percentageComplete: { type: 'number', description: 'Percentage completed', optional: true },
startedAt: { type: 'string', description: 'When the deployment started', optional: true },
completedAt: { type: 'string', description: 'When the deployment completed', optional: true },
},
}
+104
View File
@@ -0,0 +1,104 @@
import type {
AppConfigGetEnvironmentParams,
AppConfigGetEnvironmentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getEnvironmentTool: ToolConfig<
AppConfigGetEnvironmentParams,
AppConfigGetEnvironmentResponse
> = {
id: 'appconfig_get_environment',
name: 'AppConfig Get Environment',
description: 'Get details about a single AWS AppConfig environment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the environment',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID to retrieve',
},
},
request: {
url: '/api/tools/appconfig/get-environment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to get AppConfig environment')
}
return {
success: true,
output: {
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
state: data.state ?? null,
monitors: data.monitors ?? [],
},
}
},
outputs: {
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'Environment ID' },
name: { type: 'string', description: 'Environment name' },
description: { type: 'string', description: 'Environment description', optional: true },
state: { type: 'string', description: 'Environment state', optional: true },
monitors: {
type: 'array',
description: 'CloudWatch alarms monitoring this environment',
items: {
type: 'object',
properties: {
alarmArn: { type: 'string', description: 'CloudWatch alarm ARN' },
alarmRoleArn: {
type: 'string',
description: 'IAM role ARN for the alarm',
optional: true,
},
},
},
},
},
}
@@ -0,0 +1,107 @@
import type {
AppConfigGetHostedConfigurationVersionParams,
AppConfigGetHostedConfigurationVersionResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const getHostedConfigurationVersionTool: ToolConfig<
AppConfigGetHostedConfigurationVersionParams,
AppConfigGetHostedConfigurationVersionResponse
> = {
id: 'appconfig_get_hosted_configuration_version',
name: 'AppConfig Get Hosted Configuration Version',
description: 'Retrieve a specific hosted configuration version from an AppConfig profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to read the version from',
},
versionNumber: {
type: 'number',
required: true,
visibility: 'user-or-llm',
description: 'The version number to retrieve',
},
},
request: {
url: '/api/tools/appconfig/get-hosted-configuration-version',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
versionNumber: params.versionNumber,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to get AppConfig hosted configuration version')
}
return {
success: true,
output: {
applicationId: data.applicationId ?? '',
configurationProfileId: data.configurationProfileId ?? '',
versionNumber: data.versionNumber ?? null,
description: data.description ?? null,
content: data.content ?? '',
contentType: data.contentType ?? null,
versionLabel: data.versionLabel ?? null,
},
}
},
outputs: {
applicationId: { type: 'string', description: 'Owning application ID' },
configurationProfileId: { type: 'string', description: 'Owning configuration profile ID' },
versionNumber: { type: 'number', description: 'Version number', optional: true },
description: { type: 'string', description: 'Description of the version', optional: true },
content: { type: 'string', description: 'The configuration content' },
contentType: {
type: 'string',
description: 'Content type of the configuration',
optional: true,
},
versionLabel: {
type: 'string',
description: 'Label of the configuration version',
optional: true,
},
},
}
+51
View File
@@ -0,0 +1,51 @@
import { createApplicationTool } from './create_application'
import { createConfigurationProfileTool } from './create_configuration_profile'
import { createEnvironmentTool } from './create_environment'
import { createHostedConfigurationVersionTool } from './create_hosted_configuration_version'
import { deleteApplicationTool } from './delete_application'
import { deleteConfigurationProfileTool } from './delete_configuration_profile'
import { deleteEnvironmentTool } from './delete_environment'
import { deleteHostedConfigurationVersionTool } from './delete_hosted_configuration_version'
import { getApplicationTool } from './get_application'
import { getConfigurationTool } from './get_configuration'
import { getConfigurationProfileTool } from './get_configuration_profile'
import { getDeploymentTool } from './get_deployment'
import { getEnvironmentTool } from './get_environment'
import { getHostedConfigurationVersionTool } from './get_hosted_configuration_version'
import { listApplicationsTool } from './list_applications'
import { listConfigurationProfilesTool } from './list_configuration_profiles'
import { listDeploymentStrategiesTool } from './list_deployment_strategies'
import { listDeploymentsTool } from './list_deployments'
import { listEnvironmentsTool } from './list_environments'
import { listHostedConfigurationVersionsTool } from './list_hosted_configuration_versions'
import { startDeploymentTool } from './start_deployment'
import { stopDeploymentTool } from './stop_deployment'
import { updateApplicationTool } from './update_application'
import { updateConfigurationProfileTool } from './update_configuration_profile'
import { updateEnvironmentTool } from './update_environment'
export const appConfigListApplicationsTool = listApplicationsTool
export const appConfigCreateApplicationTool = createApplicationTool
export const appConfigGetApplicationTool = getApplicationTool
export const appConfigUpdateApplicationTool = updateApplicationTool
export const appConfigDeleteApplicationTool = deleteApplicationTool
export const appConfigListEnvironmentsTool = listEnvironmentsTool
export const appConfigCreateEnvironmentTool = createEnvironmentTool
export const appConfigGetEnvironmentTool = getEnvironmentTool
export const appConfigUpdateEnvironmentTool = updateEnvironmentTool
export const appConfigDeleteEnvironmentTool = deleteEnvironmentTool
export const appConfigListConfigurationProfilesTool = listConfigurationProfilesTool
export const appConfigCreateConfigurationProfileTool = createConfigurationProfileTool
export const appConfigGetConfigurationProfileTool = getConfigurationProfileTool
export const appConfigUpdateConfigurationProfileTool = updateConfigurationProfileTool
export const appConfigDeleteConfigurationProfileTool = deleteConfigurationProfileTool
export const appConfigCreateHostedConfigurationVersionTool = createHostedConfigurationVersionTool
export const appConfigGetHostedConfigurationVersionTool = getHostedConfigurationVersionTool
export const appConfigListHostedConfigurationVersionsTool = listHostedConfigurationVersionsTool
export const appConfigDeleteHostedConfigurationVersionTool = deleteHostedConfigurationVersionTool
export const appConfigListDeploymentStrategiesTool = listDeploymentStrategiesTool
export const appConfigStartDeploymentTool = startDeploymentTool
export const appConfigGetDeploymentTool = getDeploymentTool
export const appConfigListDeploymentsTool = listDeploymentsTool
export const appConfigStopDeploymentTool = stopDeploymentTool
export const appConfigGetConfigurationTool = getConfigurationTool
@@ -0,0 +1,99 @@
import type {
AppConfigListApplicationsParams,
AppConfigListApplicationsResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listApplicationsTool: ToolConfig<
AppConfigListApplicationsParams,
AppConfigListApplicationsResponse
> = {
id: 'appconfig_list_applications',
name: 'AppConfig List Applications',
description: 'List applications in AWS AppConfig',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of applications to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-applications',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig applications')
}
return {
success: true,
output: {
applications: data.applications ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
applications: {
type: 'array',
description: 'List of AppConfig applications',
items: {
type: 'object',
properties: {
id: { type: 'string', description: 'Application ID' },
name: { type: 'string', description: 'Application name' },
description: { type: 'string', description: 'Application description', optional: true },
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of applications returned' },
},
}
@@ -0,0 +1,117 @@
import type {
AppConfigListConfigurationProfilesParams,
AppConfigListConfigurationProfilesResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listConfigurationProfilesTool: ToolConfig<
AppConfigListConfigurationProfilesParams,
AppConfigListConfigurationProfilesResponse
> = {
id: 'appconfig_list_configuration_profiles',
name: 'AppConfig List Configuration Profiles',
description: 'List configuration profiles for an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profiles',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of configuration profiles to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-configuration-profiles',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig configuration profiles')
}
return {
success: true,
output: {
configurationProfiles: data.configurationProfiles ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
configurationProfiles: {
type: 'array',
description: 'List of AppConfig configuration profiles',
items: {
type: 'object',
properties: {
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'Configuration profile ID' },
name: { type: 'string', description: 'Configuration profile name' },
locationUri: {
type: 'string',
description: 'Location URI of the config',
optional: true,
},
type: {
type: 'string',
description: 'Profile type (e.g., AWS.Freeform)',
optional: true,
},
validatorTypes: { type: 'array', description: 'Validator types configured' },
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of configuration profiles returned' },
},
}
@@ -0,0 +1,120 @@
import type {
AppConfigListDeploymentStrategiesParams,
AppConfigListDeploymentStrategiesResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listDeploymentStrategiesTool: ToolConfig<
AppConfigListDeploymentStrategiesParams,
AppConfigListDeploymentStrategiesResponse
> = {
id: 'appconfig_list_deployment_strategies',
name: 'AppConfig List Deployment Strategies',
description: 'List deployment strategies available in AWS AppConfig',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of deployment strategies to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-deployment-strategies',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig deployment strategies')
}
return {
success: true,
output: {
deploymentStrategies: data.deploymentStrategies ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
deploymentStrategies: {
type: 'array',
description: 'List of AppConfig deployment strategies',
items: {
type: 'object',
properties: {
id: { type: 'string', description: 'Deployment strategy ID' },
name: { type: 'string', description: 'Deployment strategy name' },
description: { type: 'string', description: 'Strategy description', optional: true },
deploymentDurationInMinutes: {
type: 'number',
description: 'Total deployment duration in minutes',
optional: true,
},
growthType: {
type: 'string',
description: 'Growth type (LINEAR or EXPONENTIAL)',
optional: true,
},
growthFactor: { type: 'number', description: 'Growth factor percentage', optional: true },
finalBakeTimeInMinutes: {
type: 'number',
description: 'Final bake time in minutes',
optional: true,
},
replicateTo: {
type: 'string',
description: 'Where the strategy is replicated',
optional: true,
},
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of deployment strategies returned' },
},
}
@@ -0,0 +1,138 @@
import type {
AppConfigListDeploymentsParams,
AppConfigListDeploymentsResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listDeploymentsTool: ToolConfig<
AppConfigListDeploymentsParams,
AppConfigListDeploymentsResponse
> = {
id: 'appconfig_list_deployments',
name: 'AppConfig List Deployments',
description: 'List deployments for an AWS AppConfig environment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID of the deployments',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID of the deployments',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of deployments to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-deployments',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig deployments')
}
return {
success: true,
output: {
deployments: data.deployments ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
deployments: {
type: 'array',
description: 'List of AppConfig deployments',
items: {
type: 'object',
properties: {
deploymentNumber: {
type: 'number',
description: 'Deployment sequence number',
optional: true,
},
configurationName: { type: 'string', description: 'Configuration name', optional: true },
configurationVersion: {
type: 'string',
description: 'Configuration version',
optional: true,
},
state: { type: 'string', description: 'Current deployment state', optional: true },
percentageComplete: {
type: 'number',
description: 'Percentage completed',
optional: true,
},
startedAt: { type: 'string', description: 'When the deployment started', optional: true },
completedAt: {
type: 'string',
description: 'When the deployment completed',
optional: true,
},
versionLabel: {
type: 'string',
description: 'Configuration version label',
optional: true,
},
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of deployments returned' },
},
}
@@ -0,0 +1,108 @@
import type {
AppConfigListEnvironmentsParams,
AppConfigListEnvironmentsResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listEnvironmentsTool: ToolConfig<
AppConfigListEnvironmentsParams,
AppConfigListEnvironmentsResponse
> = {
id: 'appconfig_list_environments',
name: 'AppConfig List Environments',
description: 'List environments for an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the environments',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of environments to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-environments',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig environments')
}
return {
success: true,
output: {
environments: data.environments ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
environments: {
type: 'array',
description: 'List of AppConfig environments',
items: {
type: 'object',
properties: {
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'Environment ID' },
name: { type: 'string', description: 'Environment name' },
description: { type: 'string', description: 'Environment description', optional: true },
state: { type: 'string', description: 'Environment state', optional: true },
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of environments returned' },
},
}
@@ -0,0 +1,132 @@
import type {
AppConfigListHostedConfigurationVersionsParams,
AppConfigListHostedConfigurationVersionsResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const listHostedConfigurationVersionsTool: ToolConfig<
AppConfigListHostedConfigurationVersionsParams,
AppConfigListHostedConfigurationVersionsResponse
> = {
id: 'appconfig_list_hosted_configuration_versions',
name: 'AppConfig List Hosted Configuration Versions',
description: 'List hosted configuration versions for an AWS AppConfig configuration profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to list versions for',
},
maxResults: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of versions to return (1-50)',
},
nextToken: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Pagination token from a previous response',
},
},
request: {
url: '/api/tools/appconfig/list-hosted-configuration-versions',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
maxResults: params.maxResults,
nextToken: params.nextToken,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to list AppConfig hosted configuration versions')
}
return {
success: true,
output: {
versions: data.versions ?? [],
nextToken: data.nextToken ?? null,
count: data.count ?? 0,
},
}
},
outputs: {
versions: {
type: 'array',
description: 'List of hosted configuration versions',
items: {
type: 'object',
properties: {
applicationId: { type: 'string', description: 'Owning application ID', optional: true },
configurationProfileId: {
type: 'string',
description: 'Owning configuration profile ID',
optional: true,
},
versionNumber: { type: 'number', description: 'Version number', optional: true },
description: {
type: 'string',
description: 'Description of the version',
optional: true,
},
contentType: {
type: 'string',
description: 'Content type of the configuration',
optional: true,
},
versionLabel: {
type: 'string',
description: 'Label of the configuration version',
optional: true,
},
},
},
},
nextToken: {
type: 'string',
description: 'Pagination token for the next page',
optional: true,
},
count: { type: 'number', description: 'Number of versions returned' },
},
}
@@ -0,0 +1,122 @@
import type {
AppConfigStartDeploymentParams,
AppConfigStartDeploymentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const startDeploymentTool: ToolConfig<
AppConfigStartDeploymentParams,
AppConfigStartDeploymentResponse
> = {
id: 'appconfig_start_deployment',
name: 'AppConfig Start Deployment',
description: 'Start deploying a configuration version to an AWS AppConfig environment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to deploy in',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID to deploy to',
},
deploymentStrategyId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The deployment strategy ID to use',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to deploy',
},
configurationVersion: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration version to deploy',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Description of the deployment',
},
},
request: {
url: '/api/tools/appconfig/start-deployment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
deploymentStrategyId: params.deploymentStrategyId,
configurationProfileId: params.configurationProfileId,
configurationVersion: params.configurationVersion,
description: params.description,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to start AppConfig deployment')
}
return {
success: true,
output: {
message: data.message ?? '',
deploymentNumber: data.deploymentNumber ?? null,
state: data.state ?? null,
percentageComplete: data.percentageComplete ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
deploymentNumber: {
type: 'number',
description: 'Sequence number of the deployment',
optional: true,
},
state: { type: 'string', description: 'Current deployment state', optional: true },
percentageComplete: {
type: 'number',
description: 'Percentage of the deployment that has completed',
optional: true,
},
},
}
@@ -0,0 +1,91 @@
import type {
AppConfigStopDeploymentParams,
AppConfigStopDeploymentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const stopDeploymentTool: ToolConfig<
AppConfigStopDeploymentParams,
AppConfigStopDeploymentResponse
> = {
id: 'appconfig_stop_deployment',
name: 'AppConfig Stop Deployment',
description: 'Stop an in-progress AWS AppConfig deployment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID of the deployment',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID of the deployment',
},
deploymentNumber: {
type: 'number',
required: true,
visibility: 'user-or-llm',
description: 'The sequence number of the deployment to stop',
},
},
request: {
url: '/api/tools/appconfig/stop-deployment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
deploymentNumber: params.deploymentNumber,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to stop AppConfig deployment')
}
return {
success: true,
output: {
message: data.message ?? '',
deploymentNumber: data.deploymentNumber ?? null,
state: data.state ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
deploymentNumber: { type: 'number', description: 'Deployment sequence number', optional: true },
state: { type: 'string', description: 'Deployment state after stopping', optional: true },
},
}
+468
View File
@@ -0,0 +1,468 @@
import type { ToolResponse } from '@/tools/types'
export interface AppConfigConnectionConfig {
region: string
accessKeyId: string
secretAccessKey: string
}
export interface AppConfigApplication {
id: string
name: string
description: string | null
}
export interface AppConfigEnvironment {
applicationId: string
id: string
name: string
description: string | null
state: string | null
}
export interface AppConfigConfigurationProfile {
applicationId: string
id: string
name: string
description: string | null
locationUri: string | null
retrievalRoleArn: string | null
type: string | null
validatorTypes: string[]
}
export interface AppConfigDeploymentSummary {
deploymentNumber: number | null
configurationName: string | null
configurationVersion: string | null
deploymentDurationInMinutes: number | null
growthType: string | null
growthFactor: number | null
finalBakeTimeInMinutes: number | null
state: string | null
percentageComplete: number | null
startedAt: string | null
completedAt: string | null
versionLabel: string | null
}
export interface AppConfigDeploymentDetail {
applicationId: string
environmentId: string
deploymentStrategyId: string
configurationProfileId: string
deploymentNumber: number | null
configurationName: string | null
configurationVersion: string | null
description: string | null
state: string | null
percentageComplete: number | null
startedAt: string | null
completedAt: string | null
}
export interface AppConfigDeploymentStrategy {
id: string
name: string
description: string | null
deploymentDurationInMinutes: number | null
growthType: string | null
growthFactor: number | null
finalBakeTimeInMinutes: number | null
replicateTo: string | null
}
export interface AppConfigHostedConfigurationVersionSummary {
applicationId: string | null
configurationProfileId: string | null
versionNumber: number | null
description: string | null
contentType: string | null
versionLabel: string | null
}
export interface AppConfigListApplicationsParams extends AppConfigConnectionConfig {
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigCreateApplicationParams extends AppConfigConnectionConfig {
name: string
description?: string | null
}
export interface AppConfigListEnvironmentsParams extends AppConfigConnectionConfig {
applicationId: string
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigCreateEnvironmentParams extends AppConfigConnectionConfig {
applicationId: string
name: string
description?: string | null
}
export interface AppConfigListConfigurationProfilesParams extends AppConfigConnectionConfig {
applicationId: string
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigCreateConfigurationProfileParams extends AppConfigConnectionConfig {
applicationId: string
name: string
locationUri: string
description?: string | null
retrievalRoleArn?: string | null
type?: string | null
}
export interface AppConfigCreateHostedConfigurationVersionParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
content: string
contentType: string
description?: string | null
latestVersionNumber?: number | null
versionLabel?: string | null
}
export interface AppConfigGetHostedConfigurationVersionParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
versionNumber: number
}
export interface AppConfigListHostedConfigurationVersionsParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigListDeploymentStrategiesParams extends AppConfigConnectionConfig {
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigStartDeploymentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
deploymentStrategyId: string
configurationProfileId: string
configurationVersion: string
description?: string | null
}
export interface AppConfigGetDeploymentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
deploymentNumber: number
}
export interface AppConfigListDeploymentsParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
maxResults?: number | null
nextToken?: string | null
}
export interface AppConfigStopDeploymentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
deploymentNumber: number
}
export interface AppConfigGetConfigurationParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
configurationProfileId: string
}
export interface AppConfigListApplicationsResponse extends ToolResponse {
output: {
applications: AppConfigApplication[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigCreateApplicationResponse extends ToolResponse {
output: {
message: string
id: string
name: string
description: string | null
}
error?: string
}
export interface AppConfigListEnvironmentsResponse extends ToolResponse {
output: {
environments: AppConfigEnvironment[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigCreateEnvironmentResponse extends ToolResponse {
output: {
message: string
applicationId: string
id: string
name: string
state: string | null
}
error?: string
}
export interface AppConfigListConfigurationProfilesResponse extends ToolResponse {
output: {
configurationProfiles: AppConfigConfigurationProfile[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigCreateConfigurationProfileResponse extends ToolResponse {
output: {
message: string
applicationId: string
id: string
name: string
locationUri: string | null
type: string | null
}
error?: string
}
export interface AppConfigCreateHostedConfigurationVersionResponse extends ToolResponse {
output: {
message: string
applicationId: string
configurationProfileId: string
versionNumber: number | null
contentType: string | null
versionLabel: string | null
}
error?: string
}
export interface AppConfigGetHostedConfigurationVersionResponse extends ToolResponse {
output: {
applicationId: string
configurationProfileId: string
versionNumber: number | null
description: string | null
content: string
contentType: string | null
versionLabel: string | null
}
error?: string
}
export interface AppConfigListDeploymentStrategiesResponse extends ToolResponse {
output: {
deploymentStrategies: AppConfigDeploymentStrategy[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigListHostedConfigurationVersionsResponse extends ToolResponse {
output: {
versions: AppConfigHostedConfigurationVersionSummary[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigStartDeploymentResponse extends ToolResponse {
output: {
message: string
deploymentNumber: number | null
state: string | null
percentageComplete: number | null
}
error?: string
}
export interface AppConfigGetDeploymentResponse extends ToolResponse {
output: AppConfigDeploymentDetail
error?: string
}
export interface AppConfigListDeploymentsResponse extends ToolResponse {
output: {
deployments: AppConfigDeploymentSummary[]
nextToken: string | null
count: number
}
error?: string
}
export interface AppConfigStopDeploymentResponse extends ToolResponse {
output: {
message: string
deploymentNumber: number | null
state: string | null
}
error?: string
}
export interface AppConfigGetConfigurationResponse extends ToolResponse {
output: {
configuration: string
contentType: string | null
versionLabel: string | null
}
error?: string
}
export interface AppConfigGetApplicationParams extends AppConfigConnectionConfig {
applicationId: string
}
export interface AppConfigUpdateApplicationParams extends AppConfigConnectionConfig {
applicationId: string
name?: string | null
description?: string | null
}
export interface AppConfigDeleteApplicationParams extends AppConfigConnectionConfig {
applicationId: string
}
export interface AppConfigGetEnvironmentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
}
export interface AppConfigUpdateEnvironmentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
name?: string | null
description?: string | null
}
export interface AppConfigDeleteEnvironmentParams extends AppConfigConnectionConfig {
applicationId: string
environmentId: string
}
export interface AppConfigGetConfigurationProfileParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
}
export interface AppConfigUpdateConfigurationProfileParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
name?: string | null
description?: string | null
retrievalRoleArn?: string | null
}
export interface AppConfigDeleteConfigurationProfileParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
}
export interface AppConfigDeleteHostedConfigurationVersionParams extends AppConfigConnectionConfig {
applicationId: string
configurationProfileId: string
versionNumber: number
}
export interface AppConfigGetApplicationResponse extends ToolResponse {
output: {
id: string
name: string
description: string | null
}
error?: string
}
export interface AppConfigUpdateApplicationResponse extends ToolResponse {
output: {
message: string
id: string
name: string
description: string | null
}
error?: string
}
export interface AppConfigGetEnvironmentResponse extends ToolResponse {
output: {
applicationId: string
id: string
name: string
description: string | null
state: string | null
monitors: Array<{ alarmArn: string; alarmRoleArn: string | null }>
}
error?: string
}
export interface AppConfigUpdateEnvironmentResponse extends ToolResponse {
output: {
message: string
applicationId: string
id: string
name: string
state: string | null
}
error?: string
}
export interface AppConfigGetConfigurationProfileResponse extends ToolResponse {
output: {
applicationId: string
id: string
name: string
description: string | null
locationUri: string | null
retrievalRoleArn: string | null
type: string | null
validators: Array<{ type: string }>
}
error?: string
}
export interface AppConfigUpdateConfigurationProfileResponse extends ToolResponse {
output: {
message: string
applicationId: string
id: string
name: string
description: string | null
type: string | null
}
error?: string
}
export interface AppConfigDeleteResourceResponse extends ToolResponse {
output: {
message: string
applicationId?: string
id: string
}
error?: string
}
export interface AppConfigDeleteHostedConfigurationVersionResponse extends ToolResponse {
output: {
message: string
applicationId: string
configurationProfileId: string
versionNumber: number
}
error?: string
}
@@ -0,0 +1,97 @@
import type {
AppConfigUpdateApplicationParams,
AppConfigUpdateApplicationResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const updateApplicationTool: ToolConfig<
AppConfigUpdateApplicationParams,
AppConfigUpdateApplicationResponse
> = {
id: 'appconfig_update_application',
name: 'AppConfig Update Application',
description: 'Update the name or description of an AWS AppConfig application',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID to update',
},
name: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New name for the application',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New description for the application',
},
},
request: {
url: '/api/tools/appconfig/update-application',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
name: params.name,
description: params.description,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to update AppConfig application')
}
return {
success: true,
output: {
message: data.message ?? '',
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
id: { type: 'string', description: 'ID of the updated application' },
name: { type: 'string', description: 'Name of the updated application' },
description: {
type: 'string',
description: 'Description of the updated application',
optional: true,
},
},
}
@@ -0,0 +1,112 @@
import type {
AppConfigUpdateConfigurationProfileParams,
AppConfigUpdateConfigurationProfileResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const updateConfigurationProfileTool: ToolConfig<
AppConfigUpdateConfigurationProfileParams,
AppConfigUpdateConfigurationProfileResponse
> = {
id: 'appconfig_update_configuration_profile',
name: 'AppConfig Update Configuration Profile',
description:
'Update the name, description, or retrieval role of an AppConfig configuration profile',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the configuration profile',
},
configurationProfileId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The configuration profile ID to update',
},
name: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New name for the configuration profile',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New description for the configuration profile',
},
retrievalRoleArn: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New ARN of the IAM role used to retrieve the configuration',
},
},
request: {
url: '/api/tools/appconfig/update-configuration-profile',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
configurationProfileId: params.configurationProfileId,
name: params.name,
description: params.description,
retrievalRoleArn: params.retrievalRoleArn,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to update AppConfig configuration profile')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
description: data.description ?? null,
type: data.type ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the updated configuration profile' },
name: { type: 'string', description: 'Name of the updated configuration profile' },
description: { type: 'string', description: 'Description of the profile', optional: true },
type: { type: 'string', description: 'Profile type', optional: true },
},
}
@@ -0,0 +1,102 @@
import type {
AppConfigUpdateEnvironmentParams,
AppConfigUpdateEnvironmentResponse,
} from '@/tools/appconfig/types'
import type { ToolConfig } from '@/tools/types'
export const updateEnvironmentTool: ToolConfig<
AppConfigUpdateEnvironmentParams,
AppConfigUpdateEnvironmentResponse
> = {
id: 'appconfig_update_environment',
name: 'AppConfig Update Environment',
description: 'Update the name or description of an AWS AppConfig environment',
version: '1.0',
params: {
region: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS region (e.g., us-east-1)',
},
accessKeyId: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS access key ID',
},
secretAccessKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'AWS secret access key',
},
applicationId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The application ID that owns the environment',
},
environmentId: {
type: 'string',
required: true,
visibility: 'user-or-llm',
description: 'The environment ID to update',
},
name: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New name for the environment',
},
description: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'New description for the environment',
},
},
request: {
url: '/api/tools/appconfig/update-environment',
method: 'POST',
headers: () => ({ 'Content-Type': 'application/json' }),
body: (params) => ({
region: params.region,
accessKeyId: params.accessKeyId,
secretAccessKey: params.secretAccessKey,
applicationId: params.applicationId,
environmentId: params.environmentId,
name: params.name,
description: params.description,
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
if (!response.ok) {
throw new Error(data.error || 'Failed to update AppConfig environment')
}
return {
success: true,
output: {
message: data.message ?? '',
applicationId: data.applicationId ?? '',
id: data.id ?? '',
name: data.name ?? '',
state: data.state ?? null,
},
}
},
outputs: {
message: { type: 'string', description: 'Operation status message' },
applicationId: { type: 'string', description: 'Owning application ID' },
id: { type: 'string', description: 'ID of the updated environment' },
name: { type: 'string', description: 'Name of the updated environment' },
state: { type: 'string', description: 'State of the updated environment', optional: true },
},
}