aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
210 lines (209 loc) • 7.84 kB
TypeScript
import type { Construct } from 'constructs';
import { TargetSchema } from './base-schema';
import type { IRole } from '../../../../../aws-iam';
import type { IBucket, Location } from '../../../../../aws-s3';
import * as s3_assets from '../../../../../aws-s3-assets';
/******************************************************************************
* Tool Schema Configuration
*****************************************************************************/
/**
* Abstract interface for tool schema configuration
* @internal
*/
export interface IToolSchemaConfiguration {
/**
* The tool schema configuration type
*/
readonly toolSchemaType: string;
/**
* The tool schema configuration object
*/
readonly configuration: any;
}
/**
* Schema definition types
*/
export declare class SchemaDefinitionType {
/** String type */
static readonly STRING: SchemaDefinitionType;
/** Number type */
static readonly NUMBER: SchemaDefinitionType;
/** Object type */
static readonly OBJECT: SchemaDefinitionType;
/** Array type */
static readonly ARRAY: SchemaDefinitionType;
/** Boolean type */
static readonly BOOLEAN: SchemaDefinitionType;
/** Integer type */
static readonly INTEGER: SchemaDefinitionType;
/**
* Use a custom schema definition type not yet defined in this class.
* @param value The type string value
*/
static of(value: string): SchemaDefinitionType;
/** The type string value. */
readonly value: string;
private constructor();
/** Returns the string value. */
toString(): string;
}
/**
* Schema definition for tool input/output
*/
export interface SchemaDefinition {
/**
* The type of the schema definition. This field specifies the data type of the schema.
*/
readonly type: SchemaDefinitionType;
/**
* The description of the schema definition. This description provides information about the purpose and usage of the schema.
*/
/**
* The description of the schema definition. This description provides information about the purpose and usage of the schema.
* @default - No description
*/
readonly description?: string;
/**
* The items in the schema definition. This field is used for array types to define the structure of the array elements.
*/
/**
* The items in the schema definition. This field is used for array types to define the structure of the array elements.
* @default - No items definition
*/
readonly items?: SchemaDefinition;
/**
* The properties of the schema definition. These properties define the fields in the schema.
*/
/**
* The properties of the schema definition. These properties define the fields in the schema.
* @default - No properties
*/
readonly properties?: Record<string, SchemaDefinition>;
/**
* The required fields in the schema definition. These fields must be provided when using the schema.
* @default - No required fields
*/
readonly required?: string[];
}
/**
* Tool definition for inline payload
*/
export interface ToolDefinition {
/**
* The name of the tool. This name identifies the tool in the Model Context Protocol.
*/
readonly name: string;
/**
* The description of the tool. This description provides information about the purpose and usage of the tool.
*/
readonly description: string;
/**
* The input schema for the tool. This schema defines the structure of the input that the tool accepts.
*/
readonly inputSchema: SchemaDefinition;
/**
* The output schema for the tool. This schema defines the structure of the output that the tool produces.
*/
/**
* The output schema for the tool. This schema defines the structure of the output that the tool produces.
* @default - No output schema
*/
readonly outputSchema?: SchemaDefinition;
}
/******************************************************************************
* TOOL SCHEMA CLASS
*****************************************************************************/
export declare abstract class ToolSchema extends TargetSchema {
/**
* Creates a tool Schema from a local file.
* @param path - the path to the local file containing the function schema for the tool
*/
static fromLocalAsset(path: string): ToolSchema;
/**
* Creates a Tool Schema from an inline string.
* @param schema - the JSON or YAML payload defining the OpenAPI schema for the action group
*/
static fromInline(schema: ToolDefinition[]): InlineToolSchema;
/**
* Creates a Tool Schema from an S3 File
* @param bucket - the bucket containing the local file containing the OpenAPI schema for the action group
* @param objectKey - object key in the bucket
* @param bucketOwnerAccountId - optional The account ID of the Amazon S3 bucket owner. This ID is used for cross-account access to the bucket.
*/
static fromS3File(bucket: IBucket, objectKey: string, bucketOwnerAccountId?: string): S3ToolSchema;
/**
* The S3 location of the tool schema file, if using an S3-based schema.
* Contains the bucket name and object key information.
*/
readonly s3File?: Location;
/**
* The inline tool schema definition as a string, if using an inline schema.
* Can be in JSON or YAML format.
*/
readonly inlineSchema?: ToolDefinition[];
/**
* The account ID of the S3 bucket owner for cross-account access
*/
readonly bucketOwnerAccountId?: string;
protected constructor(s3File?: Location, bucketOwnerAccountId?: string, inlineSchema?: ToolDefinition[]);
/**
* Format as CFN properties
* @internal This is an internal core function and should not be called directly.
*/
abstract _render(): any;
}
/**
* Tool Schema from a local asset.
*
* The asset is uploaded to an S3 staging bucket, then moved to its final location
* by CloudFormation during deployment.
*/
export declare class AssetToolSchema extends ToolSchema {
private readonly path;
private readonly options;
private asset?;
constructor(path: string, options?: s3_assets.AssetOptions);
/**
* Binds this tool schema to a construct scope.
* This method initializes the S3 asset if it hasn't been initialized yet.
* Must be called before rendering the schema as CFN properties.
*
* @param scope - The construct scope to bind to
*/
bind(scope: Construct): void;
/**
* Format as CFN properties
* @internal This is an internal core function and should not be called directly.
*/
_render(): any;
grantPermissionsToRole(role: IRole): void;
}
/**
* Class to define a Tool Schema from an inline string.
* The schema can be provided directly as a string in either JSON or YAML format.
*/
export declare class InlineToolSchema extends ToolSchema {
private readonly schema;
constructor(schema: ToolDefinition[]);
/**
* @internal This is an internal core function and should not be called directly.
*/
_render(): any;
private renderSchemaDefinition;
bind(scope: Construct): void;
grantPermissionsToRole(_role: IRole): void;
}
/**
* Class to define a Tool Schema from an S3 object.
*/
export declare class S3ToolSchema extends ToolSchema {
private readonly location;
readonly bucketOwnerAccountId?: string | undefined;
constructor(location: Location, bucketOwnerAccountId?: string | undefined);
/**
* @internal This is an internal core function and should not be called directly.
*/
_render(): any;
bind(scope: Construct): void;
grantPermissionsToRole(role: IRole): void;
}