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
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:
@@ -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)' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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 },
|
||||
},
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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 },
|
||||
},
|
||||
}
|
||||
@@ -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 },
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user