appmod-catalog-blueprints 1.2.2__py3-none-any.whl → 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,80 +1,52 @@
1
1
  r'''
2
- ---
2
+ # AppMod Catalog Blueprints
3
3
 
4
+ [![Code](https://img.shields.io/badge/code-GitHub-green)](https://github.com/cdklabs/cdk-appmod-catalog-blueprints)
5
+ [![Website](https://img.shields.io/badge/website-cdklabs.github.io-blue)](https://cdklabs.github.io/cdk-appmod-catalog-blueprints/)
6
+ [![Package](https://img.shields.io/badge/package-construct--hub-orange)](https://constructs.dev/packages/@cdklabs/cdk-appmod-catalog-blueprints/)
4
7
 
5
- ## title: Introduction
8
+ Application Modernization (AppMod) Catalog Blueprints is a comprehensive library of use case-driven infrastructure solution blueprints built using AWS well-architected best practices. Designed as composable multi-layered building blocks using [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (CDK) [L3 constructs](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html), these blueprints offer use case-driven solutions with multiple implementation pathways and industry-specific implementations to accelerate serverless development and modernization on AWS.
6
9
 
7
- # AppMod Catalog Blueprints
10
+ **Key Benefits:**
8
11
 
9
- Application Modernization (AppMod) Catalog Blueprints is a comprehensive library of production-ready, use case-driven infrastructure blueprints in the form of composable multi-layered building blocks built using [AWS Cloud Development Kit](https://aws.amazon.com/cdk/) (CDK) [L3 constructs](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html). These blueprints offer use case-driven solutions with multiple implementation pathways and industry-specific implementations that are designed to accelerate serverless development and modernization on AWS.
12
+ * **Use case-driven solutions**: Purpose-built blueprints for common business scenarios like document processing, web applications, and AI workflows, with industry-specific implementations like insurance claims processing
13
+ * **Multi-layered approach**: Infrastructure Foundation → General Use Cases → Industry Examples, allowing you to start with proven patterns and customize as needed.
14
+ * **Composable architecture**: Mix and match independent components with standardized interfaces
15
+ * **Enterprise-ready**: Built-in security, compliance, and AWS Well-Architected best practices
16
+ * **Multi-language support**: Available in TypeScript, Python, Java, and .NET via [JSII](https://aws.github.io/jsii/)
10
17
 
11
- Built with [JSII](https://aws.github.io/jsii/), these constructs are available in TypeScript, Python, Java, and .NET, enabling teams to use their preferred programming language while leveraging the same proven infrastructure patterns.
18
+ ## How to Use This Library
12
19
 
13
20
  Get started by exploring the [use case constructs](use-cases) and deployable [examples](examples). Learn more from [documentation](https://cdklabs.github.io/cdk-appmod-catalog-blueprints/) and [Construct Hub](https://constructs.dev/packages/@cdklabs/cdk-appmod-catalog-blueprints).
14
21
 
15
- ## Core Use Cases
22
+ | Approach | Best For | Get Started |
23
+ |----------|----------|-------------|
24
+ | **🚀 Rapid Deployment** | Quick evaluation, immediate solutions, proof-of-concepts | Use [examples](./examples/) - deploy complete solutions in minutes with sensible defaults and AWS Well-Architected best practices |
25
+ | **🔧 Custom Development** | Specific requirements, enterprise integration, tailored solutions | Use [individual constructs](./use-cases/) - override defaults, inject custom logic, configure for your environment |
26
+
27
+ ## Use Case Building Blocks
28
+
29
+ ### Core Use Cases
16
30
 
17
31
  | Use Case | Description | Quick Deploy Examples |
18
32
  |----------|-------------|----------------------|
19
- | **[Document Processing](./use-cases/document-processing/)** | AI-powered document processing workflows with classification, extraction, and agentic capabilities | • [Bedrock Document Processing](./examples/document-processing/bedrock-document-processing/)<br/>• [Agentic Document Processing](./examples/document-processing/agentic-document-processing/)<br/>• [Full-Stack Insurance Claims Processing Web Application](./examples/document-processing/doc-processing-fullstack-webapp/) |
33
+ | **[Document Processing](./use-cases/document-processing/)** | Intelligent document processing workflows with classification, extraction, and agentic capabilities | • [Bedrock Document Processing](./examples/document-processing/bedrock-document-processing/)<br/>• [Agentic Document Processing](./examples/document-processing/agentic-document-processing/)<br/>• [Full-Stack Insurance Claims Processing Web Application](./examples/document-processing/doc-processing-fullstack-webapp/) |
20
34
  | **[Web Application](./use-cases/webapp/)** | Static web application hosting with global CDN, security headers, and SPA support | • [Full-Stack Insurance Claims Processing Web Application](./examples/document-processing/doc-processing-fullstack-webapp/) |
21
35
 
22
- ## Foundation and Utilities
36
+ ### Foundation and Utilities
23
37
 
24
38
  | Component | Description |
25
39
  |-----------|-------------|
26
- | **[Observability & Monitoring](./use-cases/utilities/observability/)** | Comprehensive monitoring, logging, and alerting with automatic property injection and Lambda Powertools integration |
27
- | **[Data Masking](./use-cases/utilities/lambda_layers/data-masking/)** | Lambda layer for data masking and PII protection in serverless applications |
28
- | **[Infrastructure Foundation](./use-cases/framework/)** | Core infrastructure components and utilities for building scalable applications |
29
-
30
- ## Key Design Principles
31
-
32
- AppMod Catalog Blueprints is built on Object-Oriented Programming (OOP) principles, providing a structured approach to infrastructure development through core design concepts:
33
-
34
- ### Composable Architecture
35
-
36
- Build complex enterprise systems by combining independent, reusable components with standardized interfaces.
37
-
38
- * **Independent components** with clear interfaces and loose coupling for maximum flexibility
39
- * **Mix and match building blocks** to create custom solutions across different contexts and use cases
40
- * **Scalable composition** that maintains consistency while enabling incremental adoption and gradual modernization
41
-
42
- ### Multi-Layered Building Blocks Architecture
43
-
44
- Our blueprints use a multi-layered architecture that bridges the gap between business requirements and technical implementation:
45
-
46
- | Layer | Implementation Type | Purpose | Key Features |
47
- |-------|-------------------|---------|--------------|
48
- | **Infrastructure Foundation** | Abstract base classes | Shared infrastructure components and common services | • Standardized interfaces and contracts<br/>• Extensible foundation for custom implementations |
49
- | **General Use Case Implementation** | Concrete implementation classes | Production-ready implementations for common patterns across industries | • Configurable parameters for different environments<br/>• Abstract method implementations with general-purpose solutions |
50
- | **Industry-Aligned Implementation** | Configured implementation examples | Pre-configured solutions for specific business domains | • Industry-specific validation rules and workflows<br/>• Built-in compliance requirements and domain expertise |
51
-
52
- ### Production-Ready with Smart Defaults
53
-
54
- AppMod Catalog Blueprints serves both **rapid deployment** needs (for teams wanting immediate solutions) and **custom development** requirements (for teams needing tailored implementations), providing flexibility without compromising on production readiness.
55
-
56
- | Approach | Best For | Capabilities |
57
- |----------|----------|--------------|
58
- | **Out-of-the-Box Deployment** | Rapid deployment and evaluation | • Deploy complete solutions in minutes using examples for immediate value<br/>• Pre-configured security, monitoring, and best practices for production readiness<br/>• Sensible defaults with production-ready configurations that work immediately<br/>• No infrastructure boilerplate required with minimal learning curve |
59
- | **Intelligent Customization** | Custom development and integration | • Override defaults to modify behavior without changing core implementation<br/>• Enable/disable optional features to meet specific requirements<br/>• Inject custom logic at predefined extension points while maintaining production readiness<br/>• Configure parameters for different environments and use cases |
60
-
61
- ### Security & Compliance
62
-
63
- All components include enterprise-grade security by default:
64
-
65
- * **CDK Nag Integration**: Automated security compliance checking
66
- * **AWS Well-Architected**: Security, reliability, and performance best practices
67
- * **Encryption & IAM**: At-rest/in-transit encryption with least-privilege access
68
- * **Compliance Reports**: Generate reports with `npm test -- --testPathPattern="nag.test.ts"`
40
+ | **[Agentic AI Framework](./use-cases/framework/agents/)** | Composable enterprise framework for building intelligent AI agents that can be mixed and matched across diverse use cases - from document processing to conversational AI |
41
+ | **[Infrastructure Foundation](./use-cases/framework/foundation/)** | Core infrastructure components including VPC networking, access logging, and EventBridge integration |
42
+ | **[Observability & Monitoring](./use-cases/utilities/#observability)** | Comprehensive monitoring, logging, and alerting with automatic property injection and Lambda Powertools integration |
43
+ | **[Data Masking](./use-cases/utilities/#data-masking)** | Lambda layer for data masking and PII protection in serverless applications |
69
44
 
70
- ## Essential Commands
45
+ ## Getting Started
71
46
 
72
47
  ### Environment Setup
73
48
 
74
49
  ```bash
75
- # Clone the repository
76
- git clone https://github.com/cdklabs/cdk-appmod-catalog-blueprints.git
77
-
78
50
  # Configure AWS credentials and region
79
51
  aws configure
80
52
  # OR set AWS profile: export AWS_PROFILE=your-profile-name
@@ -83,73 +55,74 @@ aws configure
83
55
  npx cdk bootstrap
84
56
  ```
85
57
 
86
- ### Quick Start
87
-
88
- Deploy a working example in **5 minutes**:
89
-
90
- ```bash
91
- # Navigate to any example and deploy
92
- cd examples/document-processing/agentic-document-processing
93
- npm install
94
- npm run deploy
95
- ```
58
+ ### Quick Deploy (Complete Solutions)
96
59
 
97
- ### Build & Deploy Project
60
+ Deploy working examples in minutes for immediate value:
98
61
 
99
62
  ```bash
100
- # Build entire project
101
- npx projen build
63
+ # Clone the repository
64
+ git clone https://github.com/cdklabs/cdk-appmod-catalog-blueprints.git
102
65
 
103
- # Deploy with specific profile/region
104
- npx cdk deploy --require-approval never
66
+ # Deploy complete insurance claims processing solution
67
+ cd examples/document-processing/doc-processing-fullstack-webapp
68
+ npm install && npm run deploy
69
+ # Full AI-powered solution with web interface deployed
105
70
 
106
- # Update CDK CLI if needed
107
- npm install aws-cdk@latest
71
+ # Or deploy basic document processing
72
+ cd examples/document-processing/bedrock-document-processing
73
+ npm install && npm run deploy
108
74
  ```
109
75
 
110
- ### Development
111
-
112
- ```bash
113
- # Run all tests
114
- npm test
76
+ ### Using Individual Constructs
115
77
 
116
- # Run specific test pattern
117
- npm test -- --testPathPattern="document-processing"
78
+ Add to your existing CDK projects for custom solutions:
118
79
 
119
- # Generate CDK Nag compliance reports
120
- npm test -- --testPathPattern="nag.test.ts"
80
+ ```bash
81
+ # Install the library
82
+ npm install @cdklabs/appmod-catalog-blueprints
83
+
84
+ # Use in your CDK code
85
+ import { AgenticDocumentProcessing, WebApp } from '@cdklabs/appmod-catalog-blueprints';
86
+
87
+ const docProcessor = new AgenticDocumentProcessing(this, 'Processor', {
88
+ agentDefinition: {
89
+ bedrockModel: { useCrossRegionInference: true },
90
+ systemPrompt: myPrompt,
91
+ tools: [myTools]
92
+ }
93
+ });
121
94
  ```
122
95
 
123
- ## How to Use This Library
124
-
125
- ### Quick Start (Deploy Examples)
96
+ ## Key Design Principles
126
97
 
127
- 1. **Browse Examples**: Start with the [examples](./examples/) folder to see working implementations
128
- 2. **Deploy & Test**: Use `npm run deploy` in any example to get a working system in minutes
129
- 3. **Customize**: Modify example parameters to fit your specific requirements
98
+ AppMod Catalog Blueprints is built on Object-Oriented Programming (OOP) principles, providing a structured approach to infrastructure development through core design concepts:
130
99
 
131
- ### Using Individual Constructs
100
+ ### Composable Architecture
132
101
 
133
- 1. **Import Constructs**: Add `@cdklabs/appmod-catalog-blueprints` to your CDK project
134
- 2. **Choose Your Layer**: Pick the right abstraction level for your needs
135
- 3. **Configure**: Use the configuration options documented in each construct
102
+ Build complex enterprise systems by combining independent, reusable components with standardized interfaces.
136
103
 
137
- ### Understanding the Layers
104
+ * **Independent components** with clear interfaces and loose coupling for maximum flexibility
105
+ * **Mix and match building blocks** to create custom solutions across different contexts and use cases
106
+ * **Scalable composition** that maintains consistency while enabling incremental adoption and gradual modernization
138
107
 
139
- **Foundation Layer** (`use-cases/framework/`, `use-cases/utilities/`)
108
+ ### Multi-Layered Building Blocks Architecture
140
109
 
141
- * **When to use**: Building custom solutions or need specific infrastructure components
142
- * **Components**: VPC networking, observability utilities, data management tools, etc.
110
+ Our blueprints use a multi-layered architecture that bridges the gap between business requirements and technical implementation:
143
111
 
144
- **Use Case Layer** (`use-cases/document-processing/`, `use-cases/webapp/`)
112
+ | Layer | Implementation Type | Purpose | Key Features |
113
+ |-------|-------------------|---------|--------------|
114
+ | **Infrastructure Foundation** | Abstract base classes | Shared infrastructure components and common services | • Standardized interfaces and contracts<br/>• Extensible foundation for custom implementations |
115
+ | **General Use Case Implementation** | Concrete implementation classes | Implementations for common patterns across industries | • Configurable parameters for different environments<br/>• Abstract method implementations with general-purpose solutions |
116
+ | **Industry-Aligned Implementation** | Configured implementation examples | Pre-configured solutions for specific business domains | • Industry-specific validation rules and workflows<br/>• Built-in compliance requirements and domain expertise |
145
117
 
146
- * **When to use**: Need proven patterns for common business problems
147
- * **Components**: Document processing workflows, web application hosting, data transformation patterns, etc.
118
+ ### Security & Compliance
148
119
 
149
- **Example Layer** (`examples/`)
120
+ All components include enterprise-grade security by default:
150
121
 
151
- * **When to use**: Want complete, deployable solutions
152
- * **Components**: Industry-specific configurations, end-to-end applications, reference implementations, etc.
122
+ * **CDK Nag Integration**: Automated security compliance checking
123
+ * **AWS Well-Architected**: Security, reliability, and performance best practices
124
+ * **Encryption & IAM**: At-rest/in-transit encryption with least-privilege access
125
+ * **Compliance Reports**: Generate reports with `npm test -- --testPathPattern="nag.test.ts"`
153
126
 
154
127
  ## Contributing
155
128
 
@@ -539,92 +512,112 @@ class AdditionalDistributionProps:
539
512
 
540
513
 
541
514
  @jsii.data_type(
542
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.AgentProps",
515
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.AgentDefinitionProps",
543
516
  jsii_struct_bases=[],
544
517
  name_mapping={
545
- "agent_system_prompt": "agentSystemPrompt",
518
+ "bedrock_model": "bedrockModel",
519
+ "system_prompt": "systemPrompt",
520
+ "additional_policy_statements_for_tools": "additionalPolicyStatementsForTools",
546
521
  "lambda_layers": "lambdaLayers",
547
- "tools_bucket": "toolsBucket",
548
- "tools_location": "toolsLocation",
522
+ "tools": "tools",
549
523
  },
550
524
  )
551
- class AgentProps:
525
+ class AgentDefinitionProps:
552
526
  def __init__(
553
527
  self,
554
528
  *,
555
- agent_system_prompt: typing.Optional[builtins.str] = None,
529
+ bedrock_model: typing.Union["BedrockModelProps", typing.Dict[builtins.str, typing.Any]],
530
+ system_prompt: _aws_cdk_aws_s3_assets_ceddda9d.Asset,
531
+ additional_policy_statements_for_tools: typing.Optional[typing.Sequence[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]] = None,
556
532
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
557
- tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
558
- tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
533
+ tools: typing.Optional[typing.Sequence[_aws_cdk_aws_s3_assets_ceddda9d.Asset]] = None,
559
534
  ) -> None:
560
- '''
561
- :param agent_system_prompt: (experimental) System prompt for the agent.
562
- :param lambda_layers: (experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
563
- :param tools_bucket: (experimental) Bucket where the tools are located in Primarily use to grant read permission to the processing agent to access the tools. Default: No extra IAM permissions would be automatically assigned to the processing agent.
564
- :param tools_location: (experimental) S3 path where the tools are located. The agent would dynamically load the tools
535
+ '''(experimental) Parameters that influences the behavior of the agent.
536
+
537
+ :param bedrock_model: (experimental) Configuration for the Bedrock Model to be used.
538
+ :param system_prompt: (experimental) The system prompt of the agent.
539
+ :param additional_policy_statements_for_tools: (experimental) If tools need additional IAM permissions, these statements would be attached to the Agent's IAM role.
540
+ :param lambda_layers: (experimental) Any dependencies needed by the provided tools.
541
+ :param tools: (experimental) List of tools defined in python files. This tools would automatically be loaded by the agent. You can also use this to incorporate other specialized agents as tools.
565
542
 
566
543
  :stability: experimental
567
544
  '''
545
+ if isinstance(bedrock_model, dict):
546
+ bedrock_model = BedrockModelProps(**bedrock_model)
568
547
  if __debug__:
569
- type_hints = typing.get_type_hints(_typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd896d11e)
570
- check_type(argname="argument agent_system_prompt", value=agent_system_prompt, expected_type=type_hints["agent_system_prompt"])
548
+ type_hints = typing.get_type_hints(_typecheckingstub__4a2d1deab0cc9bf96473ffb32138a2c564c47ae7382fe5d2d1f0e43da3324272)
549
+ check_type(argname="argument bedrock_model", value=bedrock_model, expected_type=type_hints["bedrock_model"])
550
+ check_type(argname="argument system_prompt", value=system_prompt, expected_type=type_hints["system_prompt"])
551
+ check_type(argname="argument additional_policy_statements_for_tools", value=additional_policy_statements_for_tools, expected_type=type_hints["additional_policy_statements_for_tools"])
571
552
  check_type(argname="argument lambda_layers", value=lambda_layers, expected_type=type_hints["lambda_layers"])
572
- check_type(argname="argument tools_bucket", value=tools_bucket, expected_type=type_hints["tools_bucket"])
573
- check_type(argname="argument tools_location", value=tools_location, expected_type=type_hints["tools_location"])
574
- self._values: typing.Dict[builtins.str, typing.Any] = {}
575
- if agent_system_prompt is not None:
576
- self._values["agent_system_prompt"] = agent_system_prompt
553
+ check_type(argname="argument tools", value=tools, expected_type=type_hints["tools"])
554
+ self._values: typing.Dict[builtins.str, typing.Any] = {
555
+ "bedrock_model": bedrock_model,
556
+ "system_prompt": system_prompt,
557
+ }
558
+ if additional_policy_statements_for_tools is not None:
559
+ self._values["additional_policy_statements_for_tools"] = additional_policy_statements_for_tools
577
560
  if lambda_layers is not None:
578
561
  self._values["lambda_layers"] = lambda_layers
579
- if tools_bucket is not None:
580
- self._values["tools_bucket"] = tools_bucket
581
- if tools_location is not None:
582
- self._values["tools_location"] = tools_location
562
+ if tools is not None:
563
+ self._values["tools"] = tools
583
564
 
584
565
  @builtins.property
585
- def agent_system_prompt(self) -> typing.Optional[builtins.str]:
586
- '''(experimental) System prompt for the agent.
566
+ def bedrock_model(self) -> "BedrockModelProps":
567
+ '''(experimental) Configuration for the Bedrock Model to be used.
587
568
 
588
569
  :stability: experimental
589
570
  '''
590
- result = self._values.get("agent_system_prompt")
591
- return typing.cast(typing.Optional[builtins.str], result)
571
+ result = self._values.get("bedrock_model")
572
+ assert result is not None, "Required property 'bedrock_model' is missing"
573
+ return typing.cast("BedrockModelProps", result)
592
574
 
593
575
  @builtins.property
594
- def lambda_layers(
595
- self,
596
- ) -> typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]]:
597
- '''(experimental) If there are python dependencies that are needed by the provided tools, provide the Lambda Layers with the dependencies.
576
+ def system_prompt(self) -> _aws_cdk_aws_s3_assets_ceddda9d.Asset:
577
+ '''(experimental) The system prompt of the agent.
598
578
 
599
579
  :stability: experimental
600
580
  '''
601
- result = self._values.get("lambda_layers")
602
- return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]], result)
581
+ result = self._values.get("system_prompt")
582
+ assert result is not None, "Required property 'system_prompt' is missing"
583
+ return typing.cast(_aws_cdk_aws_s3_assets_ceddda9d.Asset, result)
603
584
 
604
585
  @builtins.property
605
- def tools_bucket(self) -> typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket]:
606
- '''(experimental) Bucket where the tools are located in Primarily use to grant read permission to the processing agent to access the tools.
586
+ def additional_policy_statements_for_tools(
587
+ self,
588
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]]:
589
+ '''(experimental) If tools need additional IAM permissions, these statements would be attached to the Agent's IAM role.
607
590
 
608
- :default:
591
+ :stability: experimental
592
+ '''
593
+ result = self._values.get("additional_policy_statements_for_tools")
594
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]], result)
609
595
 
610
- No extra IAM permissions would be automatically
611
- assigned to the processing agent.
596
+ @builtins.property
597
+ def lambda_layers(
598
+ self,
599
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]]:
600
+ '''(experimental) Any dependencies needed by the provided tools.
612
601
 
613
602
  :stability: experimental
614
603
  '''
615
- result = self._values.get("tools_bucket")
616
- return typing.cast(typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket], result)
604
+ result = self._values.get("lambda_layers")
605
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]], result)
617
606
 
618
607
  @builtins.property
619
- def tools_location(self) -> typing.Optional[typing.List[builtins.str]]:
620
- '''(experimental) S3 path where the tools are located.
608
+ def tools(
609
+ self,
610
+ ) -> typing.Optional[typing.List[_aws_cdk_aws_s3_assets_ceddda9d.Asset]]:
611
+ '''(experimental) List of tools defined in python files.
621
612
 
622
- The agent would dynamically load the tools
613
+ This tools would automatically
614
+ be loaded by the agent. You can also use this to incorporate other specialized
615
+ agents as tools.
623
616
 
624
617
  :stability: experimental
625
618
  '''
626
- result = self._values.get("tools_location")
627
- return typing.cast(typing.Optional[typing.List[builtins.str]], result)
619
+ result = self._values.get("tools")
620
+ return typing.cast(typing.Optional[typing.List[_aws_cdk_aws_s3_assets_ceddda9d.Asset]], result)
628
621
 
629
622
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
630
623
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -633,147 +626,86 @@ class AgentProps:
633
626
  return not (rhs == self)
634
627
 
635
628
  def __repr__(self) -> str:
636
- return "AgentProps(%s)" % ", ".join(
629
+ return "AgentDefinitionProps(%s)" % ", ".join(
637
630
  k + "=" + repr(v) for k, v in self._values.items()
638
631
  )
639
632
 
640
633
 
641
- @jsii.enum(
642
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BedrockCrossRegionInferencePrefix"
643
- )
644
- class BedrockCrossRegionInferencePrefix(enum.Enum):
645
- '''(experimental) Cross-region inference prefix options for Bedrock models.
646
-
647
- Used to configure inference profiles for improved availability and performance.
648
-
649
- :stability: experimental
650
- '''
651
-
652
- US = "US"
653
- '''(experimental) US-based cross-region inference profile.
654
-
655
- :stability: experimental
656
- '''
657
- EU = "EU"
658
- '''(experimental) EU-based cross-region inference profile.
659
-
660
- :stability: experimental
661
- '''
662
-
663
-
664
- @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
665
- class CloudfrontDistributionObservabilityPropertyInjector(
666
- metaclass=jsii.JSIIMeta,
667
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.CloudfrontDistributionObservabilityPropertyInjector",
668
- ):
669
- '''
670
- :stability: experimental
671
- '''
672
-
673
- def __init__(self) -> None:
674
- '''
675
- :stability: experimental
676
- '''
677
- jsii.create(self.__class__, self, [])
678
-
679
- @jsii.member(jsii_name="inject")
680
- def inject(
681
- self,
682
- original_props: typing.Any,
683
- *,
684
- id: builtins.str,
685
- scope: _constructs_77d1e7e8.Construct,
686
- ) -> typing.Any:
687
- '''(experimental) The injector to be applied to the constructor properties of the Construct.
688
-
689
- :param original_props: -
690
- :param id: id from the Construct constructor.
691
- :param scope: scope from the constructor.
692
-
693
- :stability: experimental
694
- '''
695
- if __debug__:
696
- type_hints = typing.get_type_hints(_typecheckingstub__2270aedab8c9db027e16b28fd9de8610d0f7e47778cdf1d501539d0e440a561d)
697
- check_type(argname="argument original_props", value=original_props, expected_type=type_hints["original_props"])
698
- context = _aws_cdk_ceddda9d.InjectionContext(id=id, scope=scope)
699
-
700
- return typing.cast(typing.Any, jsii.invoke(self, "inject", [original_props, context]))
701
-
702
- @builtins.property
703
- @jsii.member(jsii_name="constructUniqueId")
704
- def construct_unique_id(self) -> builtins.str:
705
- '''(experimental) The unique Id of the Construct class.
706
-
707
- :stability: experimental
708
- '''
709
- return typing.cast(builtins.str, jsii.get(self, "constructUniqueId"))
710
-
711
-
712
634
  @jsii.data_type(
713
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.CustomDomainConfig",
635
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.AgentToolsLocationDefinition",
714
636
  jsii_struct_bases=[],
715
637
  name_mapping={
716
- "certificate": "certificate",
717
- "domain_name": "domainName",
718
- "hosted_zone": "hostedZone",
638
+ "bucket_name": "bucketName",
639
+ "is_file": "isFile",
640
+ "is_zip_archive": "isZipArchive",
641
+ "key": "key",
719
642
  },
720
643
  )
721
- class CustomDomainConfig:
644
+ class AgentToolsLocationDefinition:
722
645
  def __init__(
723
646
  self,
724
647
  *,
725
- certificate: _aws_cdk_aws_certificatemanager_ceddda9d.ICertificate,
726
- domain_name: builtins.str,
727
- hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
648
+ bucket_name: builtins.str,
649
+ is_file: builtins.bool,
650
+ is_zip_archive: builtins.bool,
651
+ key: builtins.str,
728
652
  ) -> None:
729
- '''(experimental) Custom domain configuration for the frontend.
730
-
731
- :param certificate: (experimental) SSL certificate for the domain (required when domainName is provided).
732
- :param domain_name: (experimental) Domain name for the frontend (e.g., 'app.example.com').
733
- :param hosted_zone: (experimental) Optional hosted zone for automatic DNS record creation.
653
+ '''
654
+ :param bucket_name:
655
+ :param is_file:
656
+ :param is_zip_archive:
657
+ :param key:
734
658
 
735
659
  :stability: experimental
736
660
  '''
737
661
  if __debug__:
738
- type_hints = typing.get_type_hints(_typecheckingstub__45e622c5dc8075e1ee5cdf9df72ea9b7ca33e0a7cf348dfaf54f93e635e9dde8)
739
- check_type(argname="argument certificate", value=certificate, expected_type=type_hints["certificate"])
740
- check_type(argname="argument domain_name", value=domain_name, expected_type=type_hints["domain_name"])
741
- check_type(argname="argument hosted_zone", value=hosted_zone, expected_type=type_hints["hosted_zone"])
662
+ type_hints = typing.get_type_hints(_typecheckingstub__127edbe188000e5bd850f207a22867fb37ca32772d05138c8caeec887b302f84)
663
+ check_type(argname="argument bucket_name", value=bucket_name, expected_type=type_hints["bucket_name"])
664
+ check_type(argname="argument is_file", value=is_file, expected_type=type_hints["is_file"])
665
+ check_type(argname="argument is_zip_archive", value=is_zip_archive, expected_type=type_hints["is_zip_archive"])
666
+ check_type(argname="argument key", value=key, expected_type=type_hints["key"])
742
667
  self._values: typing.Dict[builtins.str, typing.Any] = {
743
- "certificate": certificate,
744
- "domain_name": domain_name,
668
+ "bucket_name": bucket_name,
669
+ "is_file": is_file,
670
+ "is_zip_archive": is_zip_archive,
671
+ "key": key,
745
672
  }
746
- if hosted_zone is not None:
747
- self._values["hosted_zone"] = hosted_zone
748
673
 
749
674
  @builtins.property
750
- def certificate(self) -> _aws_cdk_aws_certificatemanager_ceddda9d.ICertificate:
751
- '''(experimental) SSL certificate for the domain (required when domainName is provided).
752
-
675
+ def bucket_name(self) -> builtins.str:
676
+ '''
753
677
  :stability: experimental
754
678
  '''
755
- result = self._values.get("certificate")
756
- assert result is not None, "Required property 'certificate' is missing"
757
- return typing.cast(_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate, result)
679
+ result = self._values.get("bucket_name")
680
+ assert result is not None, "Required property 'bucket_name' is missing"
681
+ return typing.cast(builtins.str, result)
758
682
 
759
683
  @builtins.property
760
- def domain_name(self) -> builtins.str:
761
- '''(experimental) Domain name for the frontend (e.g., 'app.example.com').
762
-
684
+ def is_file(self) -> builtins.bool:
685
+ '''
763
686
  :stability: experimental
764
687
  '''
765
- result = self._values.get("domain_name")
766
- assert result is not None, "Required property 'domain_name' is missing"
767
- return typing.cast(builtins.str, result)
688
+ result = self._values.get("is_file")
689
+ assert result is not None, "Required property 'is_file' is missing"
690
+ return typing.cast(builtins.bool, result)
768
691
 
769
692
  @builtins.property
770
- def hosted_zone(self) -> typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone]:
771
- '''(experimental) Optional hosted zone for automatic DNS record creation.
693
+ def is_zip_archive(self) -> builtins.bool:
694
+ '''
695
+ :stability: experimental
696
+ '''
697
+ result = self._values.get("is_zip_archive")
698
+ assert result is not None, "Required property 'is_zip_archive' is missing"
699
+ return typing.cast(builtins.bool, result)
772
700
 
701
+ @builtins.property
702
+ def key(self) -> builtins.str:
703
+ '''
773
704
  :stability: experimental
774
705
  '''
775
- result = self._values.get("hosted_zone")
776
- return typing.cast(typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone], result)
706
+ result = self._values.get("key")
707
+ assert result is not None, "Required property 'key' is missing"
708
+ return typing.cast(builtins.str, result)
777
709
 
778
710
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
779
711
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -782,34 +714,17 @@ class CustomDomainConfig:
782
714
  return not (rhs == self)
783
715
 
784
716
  def __repr__(self) -> str:
785
- return "CustomDomainConfig(%s)" % ", ".join(
717
+ return "AgentToolsLocationDefinition(%s)" % ", ".join(
786
718
  k + "=" + repr(v) for k, v in self._values.items()
787
719
  )
788
720
 
789
721
 
790
- class DataLoader(
722
+ class BaseAgent(
791
723
  _constructs_77d1e7e8.Construct,
792
- metaclass=jsii.JSIIMeta,
793
- jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DataLoader",
724
+ metaclass=jsii.JSIIAbstractClass,
725
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BaseAgent",
794
726
  ):
795
- '''(experimental) DataLoader construct for loading data into Aurora/RDS databases.
796
-
797
- This construct provides a simplified solution for loading data from various file formats
798
- (SQL, mysqldump, pg_dump) into MySQL or PostgreSQL databases. It uses S3 for file storage,
799
- Step Functions for orchestration, and Lambda for processing.
800
-
801
- Architecture:
802
-
803
- 1. Files are uploaded to S3 bucket
804
- 2. Step Function is triggered with list of S3 keys
805
- 3. Step Function iterates over files in execution order
806
- 4. Lambda function processes each file against the database
807
-
808
- Example usage:
809
- Create a DataLoader with database configuration and file inputs.
810
- The construct will handle uploading files to S3, creating a Step Function
811
- to orchestrate processing, and executing the data loading pipeline.
812
-
727
+ '''
813
728
  :stability: experimental
814
729
  '''
815
730
 
@@ -818,20 +733,545 @@ class DataLoader(
818
733
  scope: _constructs_77d1e7e8.Construct,
819
734
  id: builtins.str,
820
735
  *,
821
- database_config: typing.Union["DatabaseConfig", typing.Dict[builtins.str, typing.Any]],
822
- file_inputs: typing.Sequence[typing.Union["FileInput", typing.Dict[builtins.str, typing.Any]]],
823
- memory_size: typing.Optional[jsii.Number] = None,
736
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
737
+ agent_name: builtins.str,
738
+ enable_observability: typing.Optional[builtins.bool] = None,
739
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
740
+ network: typing.Optional["Network"] = None,
824
741
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
825
- timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
742
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
743
+ metric_namespace: typing.Optional[builtins.str] = None,
744
+ metric_service_name: typing.Optional[builtins.str] = None,
826
745
  ) -> None:
827
746
  '''
828
747
  :param scope: -
829
748
  :param id: -
830
- :param database_config: (experimental) Database configuration.
831
- :param file_inputs: (experimental) List of files to load.
832
- :param memory_size: (experimental) Optional memory size for Lambda function (defaults to 1024 MB).
833
- :param removal_policy: (experimental) Optional removal policy for resources (defaults to DESTROY).
834
- :param timeout: (experimental) Optional timeout for Lambda function (defaults to 15 minutes).
749
+ :param agent_definition: (experimental) Agent related parameters.
750
+ :param agent_name: (experimental) Name of the agent.
751
+ :param enable_observability: (experimental) Enable observability. Default: false
752
+ :param encryption_key: (experimental) Encryption key to encrypt agent environment variables. Default: new KMS Key would be created
753
+ :param network: (experimental) If the Agent would be running inside a VPC. Default: Agent would not be in a VPC
754
+ :param removal_policy: (experimental) Removal policy for resources created by this construct. Default: RemovalPolicy.DESTROY
755
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
756
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
757
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
758
+
759
+ :stability: experimental
760
+ '''
761
+ if __debug__:
762
+ type_hints = typing.get_type_hints(_typecheckingstub__71b734ed2750632299f59fd7513ccde0ee5f9974b68f8c52b53e2255cdee86ff)
763
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
764
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
765
+ props = BaseAgentProps(
766
+ agent_definition=agent_definition,
767
+ agent_name=agent_name,
768
+ enable_observability=enable_observability,
769
+ encryption_key=encryption_key,
770
+ network=network,
771
+ removal_policy=removal_policy,
772
+ log_group_data_protection=log_group_data_protection,
773
+ metric_namespace=metric_namespace,
774
+ metric_service_name=metric_service_name,
775
+ )
776
+
777
+ jsii.create(self.__class__, self, [scope, id, props])
778
+
779
+ @builtins.property
780
+ @jsii.member(jsii_name="agentFunction")
781
+ @abc.abstractmethod
782
+ def agent_function(
783
+ self,
784
+ ) -> _aws_cdk_aws_lambda_python_alpha_49328424.PythonFunction:
785
+ '''
786
+ :stability: experimental
787
+ '''
788
+ ...
789
+
790
+ @builtins.property
791
+ @jsii.member(jsii_name="agentRole")
792
+ def agent_role(self) -> _aws_cdk_aws_iam_ceddda9d.Role:
793
+ '''
794
+ :stability: experimental
795
+ '''
796
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.Role, jsii.get(self, "agentRole"))
797
+
798
+ @builtins.property
799
+ @jsii.member(jsii_name="agentToolsLocationDefinitions")
800
+ def _agent_tools_location_definitions(
801
+ self,
802
+ ) -> typing.List[AgentToolsLocationDefinition]:
803
+ '''
804
+ :stability: experimental
805
+ '''
806
+ return typing.cast(typing.List[AgentToolsLocationDefinition], jsii.get(self, "agentToolsLocationDefinitions"))
807
+
808
+ @builtins.property
809
+ @jsii.member(jsii_name="encryptionKey")
810
+ def encryption_key(self) -> _aws_cdk_aws_kms_ceddda9d.Key:
811
+ '''
812
+ :stability: experimental
813
+ '''
814
+ return typing.cast(_aws_cdk_aws_kms_ceddda9d.Key, jsii.get(self, "encryptionKey"))
815
+
816
+ @builtins.property
817
+ @jsii.member(jsii_name="logGroupDataProtection")
818
+ def _log_group_data_protection(self) -> "LogGroupDataProtectionProps":
819
+ '''(experimental) log group data protection configuration.
820
+
821
+ :stability: experimental
822
+ '''
823
+ return typing.cast("LogGroupDataProtectionProps", jsii.get(self, "logGroupDataProtection"))
824
+
825
+ @builtins.property
826
+ @jsii.member(jsii_name="bedrockModel")
827
+ def bedrock_model(self) -> typing.Optional["BedrockModelProps"]:
828
+ '''
829
+ :stability: experimental
830
+ '''
831
+ return typing.cast(typing.Optional["BedrockModelProps"], jsii.get(self, "bedrockModel"))
832
+
833
+
834
+ class _BaseAgentProxy(BaseAgent):
835
+ @builtins.property
836
+ @jsii.member(jsii_name="agentFunction")
837
+ def agent_function(
838
+ self,
839
+ ) -> _aws_cdk_aws_lambda_python_alpha_49328424.PythonFunction:
840
+ '''
841
+ :stability: experimental
842
+ '''
843
+ return typing.cast(_aws_cdk_aws_lambda_python_alpha_49328424.PythonFunction, jsii.get(self, "agentFunction"))
844
+
845
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the abstract class
846
+ typing.cast(typing.Any, BaseAgent).__jsii_proxy_class__ = lambda : _BaseAgentProxy
847
+
848
+
849
+ class BatchAgent(
850
+ BaseAgent,
851
+ metaclass=jsii.JSIIMeta,
852
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BatchAgent",
853
+ ):
854
+ '''
855
+ :stability: experimental
856
+ '''
857
+
858
+ def __init__(
859
+ self,
860
+ scope: _constructs_77d1e7e8.Construct,
861
+ id: builtins.str,
862
+ *,
863
+ prompt: builtins.str,
864
+ expect_json: typing.Optional[builtins.bool] = None,
865
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
866
+ agent_name: builtins.str,
867
+ enable_observability: typing.Optional[builtins.bool] = None,
868
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
869
+ network: typing.Optional["Network"] = None,
870
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
871
+ log_group_data_protection: typing.Optional[typing.Union["LogGroupDataProtectionProps", typing.Dict[builtins.str, typing.Any]]] = None,
872
+ metric_namespace: typing.Optional[builtins.str] = None,
873
+ metric_service_name: typing.Optional[builtins.str] = None,
874
+ ) -> None:
875
+ '''
876
+ :param scope: -
877
+ :param id: -
878
+ :param prompt:
879
+ :param expect_json:
880
+ :param agent_definition: (experimental) Agent related parameters.
881
+ :param agent_name: (experimental) Name of the agent.
882
+ :param enable_observability: (experimental) Enable observability. Default: false
883
+ :param encryption_key: (experimental) Encryption key to encrypt agent environment variables. Default: new KMS Key would be created
884
+ :param network: (experimental) If the Agent would be running inside a VPC. Default: Agent would not be in a VPC
885
+ :param removal_policy: (experimental) Removal policy for resources created by this construct. Default: RemovalPolicy.DESTROY
886
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
887
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
888
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
889
+
890
+ :stability: experimental
891
+ '''
892
+ if __debug__:
893
+ type_hints = typing.get_type_hints(_typecheckingstub__c2677306b18b77c5114d824ae734b83ac837c5ea4a5b8805948f0388f1dd7995)
894
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
895
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
896
+ props = BatchAgentProps(
897
+ prompt=prompt,
898
+ expect_json=expect_json,
899
+ agent_definition=agent_definition,
900
+ agent_name=agent_name,
901
+ enable_observability=enable_observability,
902
+ encryption_key=encryption_key,
903
+ network=network,
904
+ removal_policy=removal_policy,
905
+ log_group_data_protection=log_group_data_protection,
906
+ metric_namespace=metric_namespace,
907
+ metric_service_name=metric_service_name,
908
+ )
909
+
910
+ jsii.create(self.__class__, self, [scope, id, props])
911
+
912
+ @builtins.property
913
+ @jsii.member(jsii_name="agentFunction")
914
+ def agent_function(
915
+ self,
916
+ ) -> _aws_cdk_aws_lambda_python_alpha_49328424.PythonFunction:
917
+ '''
918
+ :stability: experimental
919
+ '''
920
+ return typing.cast(_aws_cdk_aws_lambda_python_alpha_49328424.PythonFunction, jsii.get(self, "agentFunction"))
921
+
922
+
923
+ @jsii.enum(
924
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BedrockCrossRegionInferencePrefix"
925
+ )
926
+ class BedrockCrossRegionInferencePrefix(enum.Enum):
927
+ '''(experimental) Cross-region inference prefix options for Bedrock models.
928
+
929
+ Used to configure inference profiles for improved availability and performance.
930
+
931
+ :stability: experimental
932
+ '''
933
+
934
+ US = "US"
935
+ '''(experimental) US-based cross-region inference profile.
936
+
937
+ :stability: experimental
938
+ '''
939
+ EU = "EU"
940
+ '''(experimental) EU-based cross-region inference profile.
941
+
942
+ :stability: experimental
943
+ '''
944
+
945
+
946
+ @jsii.data_type(
947
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BedrockModelProps",
948
+ jsii_struct_bases=[],
949
+ name_mapping={
950
+ "cross_region_inference_prefix": "crossRegionInferencePrefix",
951
+ "fm_model_id": "fmModelId",
952
+ "use_cross_region_inference": "useCrossRegionInference",
953
+ },
954
+ )
955
+ class BedrockModelProps:
956
+ def __init__(
957
+ self,
958
+ *,
959
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
960
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
961
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
962
+ ) -> None:
963
+ '''
964
+ :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
965
+ :param fm_model_id: (experimental) Foundation model to use. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0
966
+ :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
967
+
968
+ :stability: experimental
969
+ '''
970
+ if __debug__:
971
+ type_hints = typing.get_type_hints(_typecheckingstub__e45242c855c6631d66b287b02966cc10c7006e63b282779a6fdb35ce0a2a7a67)
972
+ check_type(argname="argument cross_region_inference_prefix", value=cross_region_inference_prefix, expected_type=type_hints["cross_region_inference_prefix"])
973
+ check_type(argname="argument fm_model_id", value=fm_model_id, expected_type=type_hints["fm_model_id"])
974
+ check_type(argname="argument use_cross_region_inference", value=use_cross_region_inference, expected_type=type_hints["use_cross_region_inference"])
975
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
976
+ if cross_region_inference_prefix is not None:
977
+ self._values["cross_region_inference_prefix"] = cross_region_inference_prefix
978
+ if fm_model_id is not None:
979
+ self._values["fm_model_id"] = fm_model_id
980
+ if use_cross_region_inference is not None:
981
+ self._values["use_cross_region_inference"] = use_cross_region_inference
982
+
983
+ @builtins.property
984
+ def cross_region_inference_prefix(
985
+ self,
986
+ ) -> typing.Optional[BedrockCrossRegionInferencePrefix]:
987
+ '''(experimental) Prefix for cross-region inference configuration.
988
+
989
+ Only used when useCrossRegionInference is true.
990
+
991
+ :default: BedrockCrossRegionInferencePrefix.US
992
+
993
+ :stability: experimental
994
+ '''
995
+ result = self._values.get("cross_region_inference_prefix")
996
+ return typing.cast(typing.Optional[BedrockCrossRegionInferencePrefix], result)
997
+
998
+ @builtins.property
999
+ def fm_model_id(
1000
+ self,
1001
+ ) -> typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier]:
1002
+ '''(experimental) Foundation model to use.
1003
+
1004
+ :default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0
1005
+
1006
+ :stability: experimental
1007
+ '''
1008
+ result = self._values.get("fm_model_id")
1009
+ return typing.cast(typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier], result)
1010
+
1011
+ @builtins.property
1012
+ def use_cross_region_inference(self) -> typing.Optional[builtins.bool]:
1013
+ '''(experimental) Enable cross-region inference for Bedrock models to improve availability and performance.
1014
+
1015
+ When enabled, uses inference profiles instead of direct model invocation.
1016
+
1017
+ :default: false
1018
+
1019
+ :stability: experimental
1020
+ '''
1021
+ result = self._values.get("use_cross_region_inference")
1022
+ return typing.cast(typing.Optional[builtins.bool], result)
1023
+
1024
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1025
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1026
+
1027
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1028
+ return not (rhs == self)
1029
+
1030
+ def __repr__(self) -> str:
1031
+ return "BedrockModelProps(%s)" % ", ".join(
1032
+ k + "=" + repr(v) for k, v in self._values.items()
1033
+ )
1034
+
1035
+
1036
+ class BedrockModelUtils(
1037
+ metaclass=jsii.JSIIMeta,
1038
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BedrockModelUtils",
1039
+ ):
1040
+ '''
1041
+ :stability: experimental
1042
+ '''
1043
+
1044
+ def __init__(self) -> None:
1045
+ '''
1046
+ :stability: experimental
1047
+ '''
1048
+ jsii.create(self.__class__, self, [])
1049
+
1050
+ @jsii.member(jsii_name="deriveActualModelId")
1051
+ @builtins.classmethod
1052
+ def derive_actual_model_id(
1053
+ cls,
1054
+ *,
1055
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
1056
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
1057
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
1058
+ ) -> builtins.str:
1059
+ '''
1060
+ :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
1061
+ :param fm_model_id: (experimental) Foundation model to use. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0
1062
+ :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
1063
+
1064
+ :stability: experimental
1065
+ '''
1066
+ props = BedrockModelProps(
1067
+ cross_region_inference_prefix=cross_region_inference_prefix,
1068
+ fm_model_id=fm_model_id,
1069
+ use_cross_region_inference=use_cross_region_inference,
1070
+ )
1071
+
1072
+ return typing.cast(builtins.str, jsii.sinvoke(cls, "deriveActualModelId", [props]))
1073
+
1074
+ @jsii.member(jsii_name="generateModelIAMPermissions")
1075
+ @builtins.classmethod
1076
+ def generate_model_iam_permissions(
1077
+ cls,
1078
+ scope: _constructs_77d1e7e8.Construct,
1079
+ *,
1080
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
1081
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
1082
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
1083
+ ) -> _aws_cdk_aws_iam_ceddda9d.PolicyStatement:
1084
+ '''
1085
+ :param scope: -
1086
+ :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
1087
+ :param fm_model_id: (experimental) Foundation model to use. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0
1088
+ :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
1089
+
1090
+ :stability: experimental
1091
+ '''
1092
+ if __debug__:
1093
+ type_hints = typing.get_type_hints(_typecheckingstub__c2d6dd904193a96951d351d9b9f88371b9b85f9f44a00b0cbdbfba9f24849527)
1094
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1095
+ props = BedrockModelProps(
1096
+ cross_region_inference_prefix=cross_region_inference_prefix,
1097
+ fm_model_id=fm_model_id,
1098
+ use_cross_region_inference=use_cross_region_inference,
1099
+ )
1100
+
1101
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.PolicyStatement, jsii.sinvoke(cls, "generateModelIAMPermissions", [scope, props]))
1102
+
1103
+
1104
+ @jsii.implements(_aws_cdk_ceddda9d.IPropertyInjector)
1105
+ class CloudfrontDistributionObservabilityPropertyInjector(
1106
+ metaclass=jsii.JSIIMeta,
1107
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.CloudfrontDistributionObservabilityPropertyInjector",
1108
+ ):
1109
+ '''
1110
+ :stability: experimental
1111
+ '''
1112
+
1113
+ def __init__(self) -> None:
1114
+ '''
1115
+ :stability: experimental
1116
+ '''
1117
+ jsii.create(self.__class__, self, [])
1118
+
1119
+ @jsii.member(jsii_name="inject")
1120
+ def inject(
1121
+ self,
1122
+ original_props: typing.Any,
1123
+ *,
1124
+ id: builtins.str,
1125
+ scope: _constructs_77d1e7e8.Construct,
1126
+ ) -> typing.Any:
1127
+ '''(experimental) The injector to be applied to the constructor properties of the Construct.
1128
+
1129
+ :param original_props: -
1130
+ :param id: id from the Construct constructor.
1131
+ :param scope: scope from the constructor.
1132
+
1133
+ :stability: experimental
1134
+ '''
1135
+ if __debug__:
1136
+ type_hints = typing.get_type_hints(_typecheckingstub__2270aedab8c9db027e16b28fd9de8610d0f7e47778cdf1d501539d0e440a561d)
1137
+ check_type(argname="argument original_props", value=original_props, expected_type=type_hints["original_props"])
1138
+ context = _aws_cdk_ceddda9d.InjectionContext(id=id, scope=scope)
1139
+
1140
+ return typing.cast(typing.Any, jsii.invoke(self, "inject", [original_props, context]))
1141
+
1142
+ @builtins.property
1143
+ @jsii.member(jsii_name="constructUniqueId")
1144
+ def construct_unique_id(self) -> builtins.str:
1145
+ '''(experimental) The unique Id of the Construct class.
1146
+
1147
+ :stability: experimental
1148
+ '''
1149
+ return typing.cast(builtins.str, jsii.get(self, "constructUniqueId"))
1150
+
1151
+
1152
+ @jsii.data_type(
1153
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.CustomDomainConfig",
1154
+ jsii_struct_bases=[],
1155
+ name_mapping={
1156
+ "certificate": "certificate",
1157
+ "domain_name": "domainName",
1158
+ "hosted_zone": "hostedZone",
1159
+ },
1160
+ )
1161
+ class CustomDomainConfig:
1162
+ def __init__(
1163
+ self,
1164
+ *,
1165
+ certificate: _aws_cdk_aws_certificatemanager_ceddda9d.ICertificate,
1166
+ domain_name: builtins.str,
1167
+ hosted_zone: typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone] = None,
1168
+ ) -> None:
1169
+ '''(experimental) Custom domain configuration for the frontend.
1170
+
1171
+ :param certificate: (experimental) SSL certificate for the domain (required when domainName is provided).
1172
+ :param domain_name: (experimental) Domain name for the frontend (e.g., 'app.example.com').
1173
+ :param hosted_zone: (experimental) Optional hosted zone for automatic DNS record creation.
1174
+
1175
+ :stability: experimental
1176
+ '''
1177
+ if __debug__:
1178
+ type_hints = typing.get_type_hints(_typecheckingstub__45e622c5dc8075e1ee5cdf9df72ea9b7ca33e0a7cf348dfaf54f93e635e9dde8)
1179
+ check_type(argname="argument certificate", value=certificate, expected_type=type_hints["certificate"])
1180
+ check_type(argname="argument domain_name", value=domain_name, expected_type=type_hints["domain_name"])
1181
+ check_type(argname="argument hosted_zone", value=hosted_zone, expected_type=type_hints["hosted_zone"])
1182
+ self._values: typing.Dict[builtins.str, typing.Any] = {
1183
+ "certificate": certificate,
1184
+ "domain_name": domain_name,
1185
+ }
1186
+ if hosted_zone is not None:
1187
+ self._values["hosted_zone"] = hosted_zone
1188
+
1189
+ @builtins.property
1190
+ def certificate(self) -> _aws_cdk_aws_certificatemanager_ceddda9d.ICertificate:
1191
+ '''(experimental) SSL certificate for the domain (required when domainName is provided).
1192
+
1193
+ :stability: experimental
1194
+ '''
1195
+ result = self._values.get("certificate")
1196
+ assert result is not None, "Required property 'certificate' is missing"
1197
+ return typing.cast(_aws_cdk_aws_certificatemanager_ceddda9d.ICertificate, result)
1198
+
1199
+ @builtins.property
1200
+ def domain_name(self) -> builtins.str:
1201
+ '''(experimental) Domain name for the frontend (e.g., 'app.example.com').
1202
+
1203
+ :stability: experimental
1204
+ '''
1205
+ result = self._values.get("domain_name")
1206
+ assert result is not None, "Required property 'domain_name' is missing"
1207
+ return typing.cast(builtins.str, result)
1208
+
1209
+ @builtins.property
1210
+ def hosted_zone(self) -> typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone]:
1211
+ '''(experimental) Optional hosted zone for automatic DNS record creation.
1212
+
1213
+ :stability: experimental
1214
+ '''
1215
+ result = self._values.get("hosted_zone")
1216
+ return typing.cast(typing.Optional[_aws_cdk_aws_route53_ceddda9d.IHostedZone], result)
1217
+
1218
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
1219
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
1220
+
1221
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
1222
+ return not (rhs == self)
1223
+
1224
+ def __repr__(self) -> str:
1225
+ return "CustomDomainConfig(%s)" % ", ".join(
1226
+ k + "=" + repr(v) for k, v in self._values.items()
1227
+ )
1228
+
1229
+
1230
+ class DataLoader(
1231
+ _constructs_77d1e7e8.Construct,
1232
+ metaclass=jsii.JSIIMeta,
1233
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DataLoader",
1234
+ ):
1235
+ '''(experimental) DataLoader construct for loading data into Aurora/RDS databases.
1236
+
1237
+ This construct provides a simplified solution for loading data from various file formats
1238
+ (SQL, mysqldump, pg_dump) into MySQL or PostgreSQL databases. It uses S3 for file storage,
1239
+ Step Functions for orchestration, and Lambda for processing.
1240
+
1241
+ Architecture:
1242
+
1243
+ 1. Files are uploaded to S3 bucket
1244
+ 2. Step Function is triggered with list of S3 keys
1245
+ 3. Step Function iterates over files in execution order
1246
+ 4. Lambda function processes each file against the database
1247
+
1248
+ Example usage:
1249
+ Create a DataLoader with database configuration and file inputs.
1250
+ The construct will handle uploading files to S3, creating a Step Function
1251
+ to orchestrate processing, and executing the data loading pipeline.
1252
+
1253
+ :stability: experimental
1254
+ '''
1255
+
1256
+ def __init__(
1257
+ self,
1258
+ scope: _constructs_77d1e7e8.Construct,
1259
+ id: builtins.str,
1260
+ *,
1261
+ database_config: typing.Union["DatabaseConfig", typing.Dict[builtins.str, typing.Any]],
1262
+ file_inputs: typing.Sequence[typing.Union["FileInput", typing.Dict[builtins.str, typing.Any]]],
1263
+ memory_size: typing.Optional[jsii.Number] = None,
1264
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
1265
+ timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
1266
+ ) -> None:
1267
+ '''
1268
+ :param scope: -
1269
+ :param id: -
1270
+ :param database_config: (experimental) Database configuration.
1271
+ :param file_inputs: (experimental) List of files to load.
1272
+ :param memory_size: (experimental) Optional memory size for Lambda function (defaults to 1024 MB).
1273
+ :param removal_policy: (experimental) Optional removal policy for resources (defaults to DESTROY).
1274
+ :param timeout: (experimental) Optional timeout for Lambda function (defaults to 15 minutes).
835
1275
 
836
1276
  :stability: experimental
837
1277
  '''
@@ -1197,6 +1637,29 @@ class DatabaseEngine(enum.Enum):
1197
1637
  '''
1198
1638
 
1199
1639
 
1640
+ class DefaultAgentConfig(
1641
+ metaclass=jsii.JSIIMeta,
1642
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultAgentConfig",
1643
+ ):
1644
+ '''
1645
+ :stability: experimental
1646
+ '''
1647
+
1648
+ def __init__(self) -> None:
1649
+ '''
1650
+ :stability: experimental
1651
+ '''
1652
+ jsii.create(self.__class__, self, [])
1653
+
1654
+ @jsii.python.classproperty
1655
+ @jsii.member(jsii_name="DEFAULT_OBSERVABILITY_METRIC_SVC_NAME")
1656
+ def DEFAULT_OBSERVABILITY_METRIC_SVC_NAME(cls) -> builtins.str:
1657
+ '''
1658
+ :stability: experimental
1659
+ '''
1660
+ return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_OBSERVABILITY_METRIC_SVC_NAME"))
1661
+
1662
+
1200
1663
  class DefaultDocumentProcessingConfig(
1201
1664
  metaclass=jsii.JSIIMeta,
1202
1665
  jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig",
@@ -2986,6 +3449,43 @@ class LogGroupDataProtectionProps:
2986
3449
  )
2987
3450
 
2988
3451
 
3452
+ class LogGroupDataProtectionUtils(
3453
+ metaclass=jsii.JSIIMeta,
3454
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.LogGroupDataProtectionUtils",
3455
+ ):
3456
+ '''
3457
+ :stability: experimental
3458
+ '''
3459
+
3460
+ def __init__(self) -> None:
3461
+ '''
3462
+ :stability: experimental
3463
+ '''
3464
+ jsii.create(self.__class__, self, [])
3465
+
3466
+ @jsii.member(jsii_name="handleDefault")
3467
+ @builtins.classmethod
3468
+ def handle_default(
3469
+ cls,
3470
+ scope: _constructs_77d1e7e8.Construct,
3471
+ props: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
3472
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
3473
+ ) -> LogGroupDataProtectionProps:
3474
+ '''
3475
+ :param scope: -
3476
+ :param props: -
3477
+ :param removal_policy: -
3478
+
3479
+ :stability: experimental
3480
+ '''
3481
+ if __debug__:
3482
+ type_hints = typing.get_type_hints(_typecheckingstub__e3a45e54ca44da7f036d13ce54f925e2a16d4e1ae6f2df04d64a1f10ca0133f0)
3483
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
3484
+ check_type(argname="argument props", value=props, expected_type=type_hints["props"])
3485
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
3486
+ return typing.cast(LogGroupDataProtectionProps, jsii.sinvoke(cls, "handleDefault", [scope, props, removal_policy]))
3487
+
3488
+
2989
3489
  class Network(
2990
3490
  _constructs_77d1e7e8.Construct,
2991
3491
  metaclass=jsii.JSIIMeta,
@@ -3703,64 +4203,249 @@ class StateMachineObservabilityPropertyInjector(
3703
4203
  :stability: experimental
3704
4204
  '''
3705
4205
 
3706
- def __init__(
3707
- self,
3708
- *,
3709
- data_protection_identifiers: typing.Optional[typing.Sequence[_aws_cdk_aws_logs_ceddda9d.DataIdentifier]] = None,
3710
- log_group_encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
3711
- ) -> None:
4206
+ def __init__(
4207
+ self,
4208
+ *,
4209
+ data_protection_identifiers: typing.Optional[typing.Sequence[_aws_cdk_aws_logs_ceddda9d.DataIdentifier]] = None,
4210
+ log_group_encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4211
+ ) -> None:
4212
+ '''
4213
+ :param data_protection_identifiers: (experimental) List of DataIdentifiers that would be used as part of the Data Protection Policy that would be created for the log group. Default: Data Protection Policy won't be enabled
4214
+ :param log_group_encryption_key: (experimental) Encryption key that would be used to encrypt the relevant log group. Default: a new KMS key would automatically be created
4215
+
4216
+ :stability: experimental
4217
+ '''
4218
+ log_group_data_protection = LogGroupDataProtectionProps(
4219
+ data_protection_identifiers=data_protection_identifiers,
4220
+ log_group_encryption_key=log_group_encryption_key,
4221
+ )
4222
+
4223
+ jsii.create(self.__class__, self, [log_group_data_protection])
4224
+
4225
+ @jsii.member(jsii_name="inject")
4226
+ def inject(
4227
+ self,
4228
+ original_props: typing.Any,
4229
+ *,
4230
+ id: builtins.str,
4231
+ scope: _constructs_77d1e7e8.Construct,
4232
+ ) -> typing.Any:
4233
+ '''(experimental) The injector to be applied to the constructor properties of the Construct.
4234
+
4235
+ :param original_props: -
4236
+ :param id: id from the Construct constructor.
4237
+ :param scope: scope from the constructor.
4238
+
4239
+ :stability: experimental
4240
+ '''
4241
+ if __debug__:
4242
+ type_hints = typing.get_type_hints(_typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da571d43e7)
4243
+ check_type(argname="argument original_props", value=original_props, expected_type=type_hints["original_props"])
4244
+ _context = _aws_cdk_ceddda9d.InjectionContext(id=id, scope=scope)
4245
+
4246
+ return typing.cast(typing.Any, jsii.invoke(self, "inject", [original_props, _context]))
4247
+
4248
+ @builtins.property
4249
+ @jsii.member(jsii_name="constructUniqueId")
4250
+ def construct_unique_id(self) -> builtins.str:
4251
+ '''(experimental) The unique Id of the Construct class.
4252
+
4253
+ :stability: experimental
4254
+ '''
4255
+ return typing.cast(builtins.str, jsii.get(self, "constructUniqueId"))
4256
+
4257
+ @builtins.property
4258
+ @jsii.member(jsii_name="logGroupDataProtection")
4259
+ def log_group_data_protection(self) -> LogGroupDataProtectionProps:
4260
+ '''
4261
+ :stability: experimental
4262
+ '''
4263
+ return typing.cast(LogGroupDataProtectionProps, jsii.get(self, "logGroupDataProtection"))
4264
+
4265
+
4266
+ @jsii.data_type(
4267
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BaseAgentProps",
4268
+ jsii_struct_bases=[ObservableProps],
4269
+ name_mapping={
4270
+ "log_group_data_protection": "logGroupDataProtection",
4271
+ "metric_namespace": "metricNamespace",
4272
+ "metric_service_name": "metricServiceName",
4273
+ "agent_definition": "agentDefinition",
4274
+ "agent_name": "agentName",
4275
+ "enable_observability": "enableObservability",
4276
+ "encryption_key": "encryptionKey",
4277
+ "network": "network",
4278
+ "removal_policy": "removalPolicy",
4279
+ },
4280
+ )
4281
+ class BaseAgentProps(ObservableProps):
4282
+ def __init__(
4283
+ self,
4284
+ *,
4285
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4286
+ metric_namespace: typing.Optional[builtins.str] = None,
4287
+ metric_service_name: typing.Optional[builtins.str] = None,
4288
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
4289
+ agent_name: builtins.str,
4290
+ enable_observability: typing.Optional[builtins.bool] = None,
4291
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
4292
+ network: typing.Optional[Network] = None,
4293
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4294
+ ) -> None:
4295
+ '''
4296
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
4297
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
4298
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
4299
+ :param agent_definition: (experimental) Agent related parameters.
4300
+ :param agent_name: (experimental) Name of the agent.
4301
+ :param enable_observability: (experimental) Enable observability. Default: false
4302
+ :param encryption_key: (experimental) Encryption key to encrypt agent environment variables. Default: new KMS Key would be created
4303
+ :param network: (experimental) If the Agent would be running inside a VPC. Default: Agent would not be in a VPC
4304
+ :param removal_policy: (experimental) Removal policy for resources created by this construct. Default: RemovalPolicy.DESTROY
4305
+
4306
+ :stability: experimental
4307
+ '''
4308
+ if isinstance(log_group_data_protection, dict):
4309
+ log_group_data_protection = LogGroupDataProtectionProps(**log_group_data_protection)
4310
+ if isinstance(agent_definition, dict):
4311
+ agent_definition = AgentDefinitionProps(**agent_definition)
4312
+ if __debug__:
4313
+ type_hints = typing.get_type_hints(_typecheckingstub__feb650555d9014f75886d26d16787c0c2e83a042e7e61844bf4d21c890ce479c)
4314
+ check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
4315
+ check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
4316
+ check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
4317
+ check_type(argname="argument agent_definition", value=agent_definition, expected_type=type_hints["agent_definition"])
4318
+ check_type(argname="argument agent_name", value=agent_name, expected_type=type_hints["agent_name"])
4319
+ check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
4320
+ check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
4321
+ check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4322
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4323
+ self._values: typing.Dict[builtins.str, typing.Any] = {
4324
+ "agent_definition": agent_definition,
4325
+ "agent_name": agent_name,
4326
+ }
4327
+ if log_group_data_protection is not None:
4328
+ self._values["log_group_data_protection"] = log_group_data_protection
4329
+ if metric_namespace is not None:
4330
+ self._values["metric_namespace"] = metric_namespace
4331
+ if metric_service_name is not None:
4332
+ self._values["metric_service_name"] = metric_service_name
4333
+ if enable_observability is not None:
4334
+ self._values["enable_observability"] = enable_observability
4335
+ if encryption_key is not None:
4336
+ self._values["encryption_key"] = encryption_key
4337
+ if network is not None:
4338
+ self._values["network"] = network
4339
+ if removal_policy is not None:
4340
+ self._values["removal_policy"] = removal_policy
4341
+
4342
+ @builtins.property
4343
+ def log_group_data_protection(self) -> typing.Optional[LogGroupDataProtectionProps]:
4344
+ '''(experimental) Data protection related configuration.
4345
+
4346
+ :default: a new KMS key would be generated
4347
+
4348
+ :stability: experimental
4349
+ '''
4350
+ result = self._values.get("log_group_data_protection")
4351
+ return typing.cast(typing.Optional[LogGroupDataProtectionProps], result)
4352
+
4353
+ @builtins.property
4354
+ def metric_namespace(self) -> typing.Optional[builtins.str]:
4355
+ '''(experimental) Business metric namespace.
4356
+
4357
+ :default: would be defined per use case
4358
+
4359
+ :stability: experimental
3712
4360
  '''
3713
- :param data_protection_identifiers: (experimental) List of DataIdentifiers that would be used as part of the Data Protection Policy that would be created for the log group. Default: Data Protection Policy won't be enabled
3714
- :param log_group_encryption_key: (experimental) Encryption key that would be used to encrypt the relevant log group. Default: a new KMS key would automatically be created
4361
+ result = self._values.get("metric_namespace")
4362
+ return typing.cast(typing.Optional[builtins.str], result)
4363
+
4364
+ @builtins.property
4365
+ def metric_service_name(self) -> typing.Optional[builtins.str]:
4366
+ '''(experimental) Business metric service name dimension.
4367
+
4368
+ :default: would be defined per use case
3715
4369
 
3716
4370
  :stability: experimental
3717
4371
  '''
3718
- log_group_data_protection = LogGroupDataProtectionProps(
3719
- data_protection_identifiers=data_protection_identifiers,
3720
- log_group_encryption_key=log_group_encryption_key,
3721
- )
4372
+ result = self._values.get("metric_service_name")
4373
+ return typing.cast(typing.Optional[builtins.str], result)
3722
4374
 
3723
- jsii.create(self.__class__, self, [log_group_data_protection])
4375
+ @builtins.property
4376
+ def agent_definition(self) -> AgentDefinitionProps:
4377
+ '''(experimental) Agent related parameters.
3724
4378
 
3725
- @jsii.member(jsii_name="inject")
3726
- def inject(
3727
- self,
3728
- original_props: typing.Any,
3729
- *,
3730
- id: builtins.str,
3731
- scope: _constructs_77d1e7e8.Construct,
3732
- ) -> typing.Any:
3733
- '''(experimental) The injector to be applied to the constructor properties of the Construct.
4379
+ :stability: experimental
4380
+ '''
4381
+ result = self._values.get("agent_definition")
4382
+ assert result is not None, "Required property 'agent_definition' is missing"
4383
+ return typing.cast(AgentDefinitionProps, result)
3734
4384
 
3735
- :param original_props: -
3736
- :param id: id from the Construct constructor.
3737
- :param scope: scope from the constructor.
4385
+ @builtins.property
4386
+ def agent_name(self) -> builtins.str:
4387
+ '''(experimental) Name of the agent.
3738
4388
 
3739
4389
  :stability: experimental
3740
4390
  '''
3741
- if __debug__:
3742
- type_hints = typing.get_type_hints(_typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da571d43e7)
3743
- check_type(argname="argument original_props", value=original_props, expected_type=type_hints["original_props"])
3744
- _context = _aws_cdk_ceddda9d.InjectionContext(id=id, scope=scope)
4391
+ result = self._values.get("agent_name")
4392
+ assert result is not None, "Required property 'agent_name' is missing"
4393
+ return typing.cast(builtins.str, result)
3745
4394
 
3746
- return typing.cast(typing.Any, jsii.invoke(self, "inject", [original_props, _context]))
4395
+ @builtins.property
4396
+ def enable_observability(self) -> typing.Optional[builtins.bool]:
4397
+ '''(experimental) Enable observability.
4398
+
4399
+ :default: false
4400
+
4401
+ :stability: experimental
4402
+ '''
4403
+ result = self._values.get("enable_observability")
4404
+ return typing.cast(typing.Optional[builtins.bool], result)
3747
4405
 
3748
4406
  @builtins.property
3749
- @jsii.member(jsii_name="constructUniqueId")
3750
- def construct_unique_id(self) -> builtins.str:
3751
- '''(experimental) The unique Id of the Construct class.
4407
+ def encryption_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key]:
4408
+ '''(experimental) Encryption key to encrypt agent environment variables.
4409
+
4410
+ :default: new KMS Key would be created
3752
4411
 
3753
4412
  :stability: experimental
3754
4413
  '''
3755
- return typing.cast(builtins.str, jsii.get(self, "constructUniqueId"))
4414
+ result = self._values.get("encryption_key")
4415
+ return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key], result)
3756
4416
 
3757
4417
  @builtins.property
3758
- @jsii.member(jsii_name="logGroupDataProtection")
3759
- def log_group_data_protection(self) -> LogGroupDataProtectionProps:
4418
+ def network(self) -> typing.Optional[Network]:
4419
+ '''(experimental) If the Agent would be running inside a VPC.
4420
+
4421
+ :default: Agent would not be in a VPC
4422
+
4423
+ :stability: experimental
3760
4424
  '''
4425
+ result = self._values.get("network")
4426
+ return typing.cast(typing.Optional[Network], result)
4427
+
4428
+ @builtins.property
4429
+ def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4430
+ '''(experimental) Removal policy for resources created by this construct.
4431
+
4432
+ :default: RemovalPolicy.DESTROY
4433
+
3761
4434
  :stability: experimental
3762
4435
  '''
3763
- return typing.cast(LogGroupDataProtectionProps, jsii.get(self, "logGroupDataProtection"))
4436
+ result = self._values.get("removal_policy")
4437
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
4438
+
4439
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
4440
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
4441
+
4442
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
4443
+ return not (rhs == self)
4444
+
4445
+ def __repr__(self) -> str:
4446
+ return "BaseAgentProps(%s)" % ", ".join(
4447
+ k + "=" + repr(v) for k, v in self._values.items()
4448
+ )
3764
4449
 
3765
4450
 
3766
4451
  @jsii.implements(IObservable)
@@ -4230,25 +4915,232 @@ class BaseDocumentProcessingProps(ObservableProps):
4230
4915
 
4231
4916
  :stability: experimental
4232
4917
  '''
4233
- result = self._values.get("eventbridge_broker")
4234
- return typing.cast(typing.Optional[EventbridgeBroker], result)
4918
+ result = self._values.get("eventbridge_broker")
4919
+ return typing.cast(typing.Optional[EventbridgeBroker], result)
4920
+
4921
+ @builtins.property
4922
+ def ingress_adapter(self) -> typing.Optional[IAdapter]:
4923
+ '''(experimental) Adapter that defines how the document processing workflow is triggered.
4924
+
4925
+ :default: QueuedS3Adapter
4926
+
4927
+ :stability: experimental
4928
+ '''
4929
+ result = self._values.get("ingress_adapter")
4930
+ return typing.cast(typing.Optional[IAdapter], result)
4931
+
4932
+ @builtins.property
4933
+ def network(self) -> typing.Optional[Network]:
4934
+ '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
4935
+
4936
+ :default: resources will run outside of a VPC
4937
+
4938
+ :stability: experimental
4939
+ '''
4940
+ result = self._values.get("network")
4941
+ return typing.cast(typing.Optional[Network], result)
4942
+
4943
+ @builtins.property
4944
+ def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4945
+ '''(experimental) Removal policy for created resources (bucket, table, queue).
4946
+
4947
+ :default: RemovalPolicy.DESTROY
4948
+
4949
+ :stability: experimental
4950
+ '''
4951
+ result = self._values.get("removal_policy")
4952
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
4953
+
4954
+ @builtins.property
4955
+ def workflow_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4956
+ '''(experimental) Maximum execution time for the Step Functions workflow.
4957
+
4958
+ :default: Duration.minutes(30)
4959
+
4960
+ :stability: experimental
4961
+ '''
4962
+ result = self._values.get("workflow_timeout")
4963
+ return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4964
+
4965
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
4966
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
4967
+
4968
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
4969
+ return not (rhs == self)
4970
+
4971
+ def __repr__(self) -> str:
4972
+ return "BaseDocumentProcessingProps(%s)" % ", ".join(
4973
+ k + "=" + repr(v) for k, v in self._values.items()
4974
+ )
4975
+
4976
+
4977
+ @jsii.data_type(
4978
+ jsii_type="@cdklabs/cdk-appmod-catalog-blueprints.BatchAgentProps",
4979
+ jsii_struct_bases=[BaseAgentProps],
4980
+ name_mapping={
4981
+ "log_group_data_protection": "logGroupDataProtection",
4982
+ "metric_namespace": "metricNamespace",
4983
+ "metric_service_name": "metricServiceName",
4984
+ "agent_definition": "agentDefinition",
4985
+ "agent_name": "agentName",
4986
+ "enable_observability": "enableObservability",
4987
+ "encryption_key": "encryptionKey",
4988
+ "network": "network",
4989
+ "removal_policy": "removalPolicy",
4990
+ "prompt": "prompt",
4991
+ "expect_json": "expectJson",
4992
+ },
4993
+ )
4994
+ class BatchAgentProps(BaseAgentProps):
4995
+ def __init__(
4996
+ self,
4997
+ *,
4998
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
4999
+ metric_namespace: typing.Optional[builtins.str] = None,
5000
+ metric_service_name: typing.Optional[builtins.str] = None,
5001
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
5002
+ agent_name: builtins.str,
5003
+ enable_observability: typing.Optional[builtins.bool] = None,
5004
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
5005
+ network: typing.Optional[Network] = None,
5006
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5007
+ prompt: builtins.str,
5008
+ expect_json: typing.Optional[builtins.bool] = None,
5009
+ ) -> None:
5010
+ '''
5011
+ :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
5012
+ :param metric_namespace: (experimental) Business metric namespace. Default: would be defined per use case
5013
+ :param metric_service_name: (experimental) Business metric service name dimension. Default: would be defined per use case
5014
+ :param agent_definition: (experimental) Agent related parameters.
5015
+ :param agent_name: (experimental) Name of the agent.
5016
+ :param enable_observability: (experimental) Enable observability. Default: false
5017
+ :param encryption_key: (experimental) Encryption key to encrypt agent environment variables. Default: new KMS Key would be created
5018
+ :param network: (experimental) If the Agent would be running inside a VPC. Default: Agent would not be in a VPC
5019
+ :param removal_policy: (experimental) Removal policy for resources created by this construct. Default: RemovalPolicy.DESTROY
5020
+ :param prompt:
5021
+ :param expect_json:
5022
+
5023
+ :stability: experimental
5024
+ '''
5025
+ if isinstance(log_group_data_protection, dict):
5026
+ log_group_data_protection = LogGroupDataProtectionProps(**log_group_data_protection)
5027
+ if isinstance(agent_definition, dict):
5028
+ agent_definition = AgentDefinitionProps(**agent_definition)
5029
+ if __debug__:
5030
+ type_hints = typing.get_type_hints(_typecheckingstub__30511d5990f52f2808903d144bad5a5c502c00b0b8c98b4fd52a3df61c18b19d)
5031
+ check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
5032
+ check_type(argname="argument metric_namespace", value=metric_namespace, expected_type=type_hints["metric_namespace"])
5033
+ check_type(argname="argument metric_service_name", value=metric_service_name, expected_type=type_hints["metric_service_name"])
5034
+ check_type(argname="argument agent_definition", value=agent_definition, expected_type=type_hints["agent_definition"])
5035
+ check_type(argname="argument agent_name", value=agent_name, expected_type=type_hints["agent_name"])
5036
+ check_type(argname="argument enable_observability", value=enable_observability, expected_type=type_hints["enable_observability"])
5037
+ check_type(argname="argument encryption_key", value=encryption_key, expected_type=type_hints["encryption_key"])
5038
+ check_type(argname="argument network", value=network, expected_type=type_hints["network"])
5039
+ check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
5040
+ check_type(argname="argument prompt", value=prompt, expected_type=type_hints["prompt"])
5041
+ check_type(argname="argument expect_json", value=expect_json, expected_type=type_hints["expect_json"])
5042
+ self._values: typing.Dict[builtins.str, typing.Any] = {
5043
+ "agent_definition": agent_definition,
5044
+ "agent_name": agent_name,
5045
+ "prompt": prompt,
5046
+ }
5047
+ if log_group_data_protection is not None:
5048
+ self._values["log_group_data_protection"] = log_group_data_protection
5049
+ if metric_namespace is not None:
5050
+ self._values["metric_namespace"] = metric_namespace
5051
+ if metric_service_name is not None:
5052
+ self._values["metric_service_name"] = metric_service_name
5053
+ if enable_observability is not None:
5054
+ self._values["enable_observability"] = enable_observability
5055
+ if encryption_key is not None:
5056
+ self._values["encryption_key"] = encryption_key
5057
+ if network is not None:
5058
+ self._values["network"] = network
5059
+ if removal_policy is not None:
5060
+ self._values["removal_policy"] = removal_policy
5061
+ if expect_json is not None:
5062
+ self._values["expect_json"] = expect_json
5063
+
5064
+ @builtins.property
5065
+ def log_group_data_protection(self) -> typing.Optional[LogGroupDataProtectionProps]:
5066
+ '''(experimental) Data protection related configuration.
5067
+
5068
+ :default: a new KMS key would be generated
5069
+
5070
+ :stability: experimental
5071
+ '''
5072
+ result = self._values.get("log_group_data_protection")
5073
+ return typing.cast(typing.Optional[LogGroupDataProtectionProps], result)
5074
+
5075
+ @builtins.property
5076
+ def metric_namespace(self) -> typing.Optional[builtins.str]:
5077
+ '''(experimental) Business metric namespace.
5078
+
5079
+ :default: would be defined per use case
5080
+
5081
+ :stability: experimental
5082
+ '''
5083
+ result = self._values.get("metric_namespace")
5084
+ return typing.cast(typing.Optional[builtins.str], result)
5085
+
5086
+ @builtins.property
5087
+ def metric_service_name(self) -> typing.Optional[builtins.str]:
5088
+ '''(experimental) Business metric service name dimension.
5089
+
5090
+ :default: would be defined per use case
5091
+
5092
+ :stability: experimental
5093
+ '''
5094
+ result = self._values.get("metric_service_name")
5095
+ return typing.cast(typing.Optional[builtins.str], result)
5096
+
5097
+ @builtins.property
5098
+ def agent_definition(self) -> AgentDefinitionProps:
5099
+ '''(experimental) Agent related parameters.
5100
+
5101
+ :stability: experimental
5102
+ '''
5103
+ result = self._values.get("agent_definition")
5104
+ assert result is not None, "Required property 'agent_definition' is missing"
5105
+ return typing.cast(AgentDefinitionProps, result)
5106
+
5107
+ @builtins.property
5108
+ def agent_name(self) -> builtins.str:
5109
+ '''(experimental) Name of the agent.
5110
+
5111
+ :stability: experimental
5112
+ '''
5113
+ result = self._values.get("agent_name")
5114
+ assert result is not None, "Required property 'agent_name' is missing"
5115
+ return typing.cast(builtins.str, result)
5116
+
5117
+ @builtins.property
5118
+ def enable_observability(self) -> typing.Optional[builtins.bool]:
5119
+ '''(experimental) Enable observability.
5120
+
5121
+ :default: false
5122
+
5123
+ :stability: experimental
5124
+ '''
5125
+ result = self._values.get("enable_observability")
5126
+ return typing.cast(typing.Optional[builtins.bool], result)
4235
5127
 
4236
5128
  @builtins.property
4237
- def ingress_adapter(self) -> typing.Optional[IAdapter]:
4238
- '''(experimental) Adapter that defines how the document processing workflow is triggered.
5129
+ def encryption_key(self) -> typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key]:
5130
+ '''(experimental) Encryption key to encrypt agent environment variables.
4239
5131
 
4240
- :default: QueuedS3Adapter
5132
+ :default: new KMS Key would be created
4241
5133
 
4242
5134
  :stability: experimental
4243
5135
  '''
4244
- result = self._values.get("ingress_adapter")
4245
- return typing.cast(typing.Optional[IAdapter], result)
5136
+ result = self._values.get("encryption_key")
5137
+ return typing.cast(typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key], result)
4246
5138
 
4247
5139
  @builtins.property
4248
5140
  def network(self) -> typing.Optional[Network]:
4249
- '''(experimental) Resources that can run inside a VPC will follow the provided network configuration.
5141
+ '''(experimental) If the Agent would be running inside a VPC.
4250
5142
 
4251
- :default: resources will run outside of a VPC
5143
+ :default: Agent would not be in a VPC
4252
5144
 
4253
5145
  :stability: experimental
4254
5146
  '''
@@ -4257,7 +5149,7 @@ class BaseDocumentProcessingProps(ObservableProps):
4257
5149
 
4258
5150
  @builtins.property
4259
5151
  def removal_policy(self) -> typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy]:
4260
- '''(experimental) Removal policy for created resources (bucket, table, queue).
5152
+ '''(experimental) Removal policy for resources created by this construct.
4261
5153
 
4262
5154
  :default: RemovalPolicy.DESTROY
4263
5155
 
@@ -4267,15 +5159,21 @@ class BaseDocumentProcessingProps(ObservableProps):
4267
5159
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy], result)
4268
5160
 
4269
5161
  @builtins.property
4270
- def workflow_timeout(self) -> typing.Optional[_aws_cdk_ceddda9d.Duration]:
4271
- '''(experimental) Maximum execution time for the Step Functions workflow.
4272
-
4273
- :default: Duration.minutes(30)
5162
+ def prompt(self) -> builtins.str:
5163
+ '''
5164
+ :stability: experimental
5165
+ '''
5166
+ result = self._values.get("prompt")
5167
+ assert result is not None, "Required property 'prompt' is missing"
5168
+ return typing.cast(builtins.str, result)
4274
5169
 
5170
+ @builtins.property
5171
+ def expect_json(self) -> typing.Optional[builtins.bool]:
5172
+ '''
4275
5173
  :stability: experimental
4276
5174
  '''
4277
- result = self._values.get("workflow_timeout")
4278
- return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5175
+ result = self._values.get("expect_json")
5176
+ return typing.cast(typing.Optional[builtins.bool], result)
4279
5177
 
4280
5178
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4281
5179
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -4284,7 +5182,7 @@ class BaseDocumentProcessingProps(ObservableProps):
4284
5182
  return not (rhs == self)
4285
5183
 
4286
5184
  def __repr__(self) -> str:
4287
- return "BaseDocumentProcessingProps(%s)" % ", ".join(
5185
+ return "BatchAgentProps(%s)" % ", ".join(
4288
5186
  k + "=" + repr(v) for k, v in self._values.items()
4289
5187
  )
4290
5188
 
@@ -4346,15 +5244,13 @@ class BedrockDocumentProcessing(
4346
5244
  scope: _constructs_77d1e7e8.Construct,
4347
5245
  id: builtins.str,
4348
5246
  *,
4349
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5247
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4350
5248
  classification_prompt: typing.Optional[builtins.str] = None,
4351
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
4352
5249
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4353
5250
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4354
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5251
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4355
5252
  processing_prompt: typing.Optional[builtins.str] = None,
4356
5253
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4357
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
4358
5254
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4359
5255
  enable_observability: typing.Optional[builtins.bool] = None,
4360
5256
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
@@ -4375,15 +5271,13 @@ class BedrockDocumentProcessing(
4375
5271
 
4376
5272
  :param scope: - The scope in which to define this construct.
4377
5273
  :param id: - The scoped construct ID. Must be unique within the scope.
4378
- :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5274
+ :param classification_bedrock_model: (experimental) Bedrock foundation model for document classification step.
4379
5275
  :param classification_prompt: (experimental) Custom prompt template for document classification. Must include placeholder for document content. Default: DEFAULT_CLASSIFICATION_PROMPT
4380
- :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
4381
5276
  :param enrichment_lambda_function: (experimental) Optional Lambda function for document enrichment step. If provided, will be invoked after extraction with workflow state.
4382
5277
  :param post_processing_lambda_function: (experimental) Optional Lambda function for post-processing step. If provided, will be invoked after enrichment with workflow state.
4383
- :param processing_model_id: (experimental) Bedrock foundation model for document extraction step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5278
+ :param processing_bedrock_model: (experimental) Bedrock foundation model for document extraction step.
4384
5279
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
4385
5280
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
4386
- :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
4387
5281
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
4388
5282
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
4389
5283
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
@@ -4403,15 +5297,13 @@ class BedrockDocumentProcessing(
4403
5297
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
4404
5298
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4405
5299
  props = BedrockDocumentProcessingProps(
4406
- classification_model_id=classification_model_id,
5300
+ classification_bedrock_model=classification_bedrock_model,
4407
5301
  classification_prompt=classification_prompt,
4408
- cross_region_inference_prefix=cross_region_inference_prefix,
4409
5302
  enrichment_lambda_function=enrichment_lambda_function,
4410
5303
  post_processing_lambda_function=post_processing_lambda_function,
4411
- processing_model_id=processing_model_id,
5304
+ processing_bedrock_model=processing_bedrock_model,
4412
5305
  processing_prompt=processing_prompt,
4413
5306
  step_timeouts=step_timeouts,
4414
- use_cross_region_inference=use_cross_region_inference,
4415
5307
  document_processing_table=document_processing_table,
4416
5308
  enable_observability=enable_observability,
4417
5309
  encryption_key=encryption_key,
@@ -4462,20 +5354,30 @@ class BedrockDocumentProcessing(
4462
5354
  @jsii.member(jsii_name="generateLambdaRoleForBedrock")
4463
5355
  def _generate_lambda_role_for_bedrock(
4464
5356
  self,
4465
- fm_model: _aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier,
4466
5357
  id: builtins.str,
5358
+ *,
5359
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
5360
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5361
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
4467
5362
  ) -> _aws_cdk_aws_iam_ceddda9d.Role:
4468
5363
  '''
4469
- :param fm_model: -
4470
5364
  :param id: -
5365
+ :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
5366
+ :param fm_model_id: (experimental) Foundation model to use. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_SONNET_4_20250514_V1_0
5367
+ :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
4471
5368
 
4472
5369
  :stability: experimental
4473
5370
  '''
4474
5371
  if __debug__:
4475
5372
  type_hints = typing.get_type_hints(_typecheckingstub__b765dc24cd888585470934e534f4d8e979ddebd46e42601cc8b50c73499e7d4e)
4476
- check_type(argname="argument fm_model", value=fm_model, expected_type=type_hints["fm_model"])
4477
5373
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
4478
- return typing.cast(_aws_cdk_aws_iam_ceddda9d.Role, jsii.invoke(self, "generateLambdaRoleForBedrock", [fm_model, id]))
5374
+ model = BedrockModelProps(
5375
+ cross_region_inference_prefix=cross_region_inference_prefix,
5376
+ fm_model_id=fm_model_id,
5377
+ use_cross_region_inference=use_cross_region_inference,
5378
+ )
5379
+
5380
+ return typing.cast(_aws_cdk_aws_iam_ceddda9d.Role, jsii.invoke(self, "generateLambdaRoleForBedrock", [id, model]))
4479
5381
 
4480
5382
  @jsii.member(jsii_name="postProcessingStep")
4481
5383
  def _post_processing_step(
@@ -4509,16 +5411,6 @@ class BedrockDocumentProcessing(
4509
5411
  '''
4510
5412
  return typing.cast(typing.Union[_aws_cdk_aws_stepfunctions_tasks_ceddda9d.LambdaInvoke, _aws_cdk_aws_stepfunctions_tasks_ceddda9d.BedrockInvokeModel, _aws_cdk_aws_stepfunctions_tasks_ceddda9d.StepFunctionsStartExecution], jsii.invoke(self, "processingStep", []))
4511
5413
 
4512
- @jsii.python.classproperty
4513
- @jsii.member(jsii_name="DEFAULT_CLASSIFICATION_MODEL_ID")
4514
- def DEFAULT_CLASSIFICATION_MODEL_ID(
4515
- cls,
4516
- ) -> _aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier:
4517
- '''
4518
- :stability: experimental
4519
- '''
4520
- return typing.cast(_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier, jsii.sget(cls, "DEFAULT_CLASSIFICATION_MODEL_ID"))
4521
-
4522
5414
  @jsii.python.classproperty
4523
5415
  @jsii.member(jsii_name="DEFAULT_CLASSIFICATION_PROMPT")
4524
5416
  def DEFAULT_CLASSIFICATION_PROMPT(cls) -> builtins.str:
@@ -4527,16 +5419,6 @@ class BedrockDocumentProcessing(
4527
5419
  '''
4528
5420
  return typing.cast(builtins.str, jsii.sget(cls, "DEFAULT_CLASSIFICATION_PROMPT"))
4529
5421
 
4530
- @jsii.python.classproperty
4531
- @jsii.member(jsii_name="DEFAULT_PROCESSING_MODEL_ID")
4532
- def DEFAULT_PROCESSING_MODEL_ID(
4533
- cls,
4534
- ) -> _aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier:
4535
- '''
4536
- :stability: experimental
4537
- '''
4538
- return typing.cast(_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier, jsii.sget(cls, "DEFAULT_PROCESSING_MODEL_ID"))
4539
-
4540
5422
  @jsii.python.classproperty
4541
5423
  @jsii.member(jsii_name="DEFAULT_PROCESSING_PROMPT")
4542
5424
  def DEFAULT_PROCESSING_PROMPT(cls) -> builtins.str:
@@ -4554,15 +5436,6 @@ class BedrockDocumentProcessing(
4554
5436
  '''
4555
5437
  return typing.cast("BedrockDocumentProcessingProps", jsii.get(self, "bedrockDocumentProcessingProps"))
4556
5438
 
4557
- @builtins.property
4558
- @jsii.member(jsii_name="crossRegionInferencePrefix")
4559
- def _cross_region_inference_prefix(self) -> BedrockCrossRegionInferencePrefix:
4560
- '''(experimental) Cross-region inference prefix for Bedrock model routing.
4561
-
4562
- :stability: experimental
4563
- '''
4564
- return typing.cast(BedrockCrossRegionInferencePrefix, jsii.get(self, "crossRegionInferencePrefix"))
4565
-
4566
5439
  @builtins.property
4567
5440
  @jsii.member(jsii_name="stateMachine")
4568
5441
  def state_machine(self) -> _aws_cdk_aws_stepfunctions_ceddda9d.StateMachine:
@@ -4588,15 +5461,13 @@ class BedrockDocumentProcessing(
4588
5461
  "network": "network",
4589
5462
  "removal_policy": "removalPolicy",
4590
5463
  "workflow_timeout": "workflowTimeout",
4591
- "classification_model_id": "classificationModelId",
5464
+ "classification_bedrock_model": "classificationBedrockModel",
4592
5465
  "classification_prompt": "classificationPrompt",
4593
- "cross_region_inference_prefix": "crossRegionInferencePrefix",
4594
5466
  "enrichment_lambda_function": "enrichmentLambdaFunction",
4595
5467
  "post_processing_lambda_function": "postProcessingLambdaFunction",
4596
- "processing_model_id": "processingModelId",
5468
+ "processing_bedrock_model": "processingBedrockModel",
4597
5469
  "processing_prompt": "processingPrompt",
4598
5470
  "step_timeouts": "stepTimeouts",
4599
- "use_cross_region_inference": "useCrossRegionInference",
4600
5471
  },
4601
5472
  )
4602
5473
  class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
@@ -4614,15 +5485,13 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4614
5485
  network: typing.Optional[Network] = None,
4615
5486
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
4616
5487
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4617
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5488
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4618
5489
  classification_prompt: typing.Optional[builtins.str] = None,
4619
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
4620
5490
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4621
5491
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4622
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5492
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4623
5493
  processing_prompt: typing.Optional[builtins.str] = None,
4624
5494
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4625
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
4626
5495
  ) -> None:
4627
5496
  '''(experimental) Configuration properties for BedrockDocumentProcessing construct.
4628
5497
 
@@ -4639,20 +5508,22 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4639
5508
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
4640
5509
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
4641
5510
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
4642
- :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5511
+ :param classification_bedrock_model: (experimental) Bedrock foundation model for document classification step.
4643
5512
  :param classification_prompt: (experimental) Custom prompt template for document classification. Must include placeholder for document content. Default: DEFAULT_CLASSIFICATION_PROMPT
4644
- :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
4645
5513
  :param enrichment_lambda_function: (experimental) Optional Lambda function for document enrichment step. If provided, will be invoked after extraction with workflow state.
4646
5514
  :param post_processing_lambda_function: (experimental) Optional Lambda function for post-processing step. If provided, will be invoked after enrichment with workflow state.
4647
- :param processing_model_id: (experimental) Bedrock foundation model for document extraction step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5515
+ :param processing_bedrock_model: (experimental) Bedrock foundation model for document extraction step.
4648
5516
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
4649
5517
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
4650
- :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
4651
5518
 
4652
5519
  :stability: experimental
4653
5520
  '''
4654
5521
  if isinstance(log_group_data_protection, dict):
4655
5522
  log_group_data_protection = LogGroupDataProtectionProps(**log_group_data_protection)
5523
+ if isinstance(classification_bedrock_model, dict):
5524
+ classification_bedrock_model = BedrockModelProps(**classification_bedrock_model)
5525
+ if isinstance(processing_bedrock_model, dict):
5526
+ processing_bedrock_model = BedrockModelProps(**processing_bedrock_model)
4656
5527
  if __debug__:
4657
5528
  type_hints = typing.get_type_hints(_typecheckingstub__9606a6418d69bde20176ec33b27eaa22c0e0cdb6b105d382e9d038566f7a29f3)
4658
5529
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
@@ -4666,15 +5537,13 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4666
5537
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
4667
5538
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
4668
5539
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
4669
- check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
5540
+ check_type(argname="argument classification_bedrock_model", value=classification_bedrock_model, expected_type=type_hints["classification_bedrock_model"])
4670
5541
  check_type(argname="argument classification_prompt", value=classification_prompt, expected_type=type_hints["classification_prompt"])
4671
- check_type(argname="argument cross_region_inference_prefix", value=cross_region_inference_prefix, expected_type=type_hints["cross_region_inference_prefix"])
4672
5542
  check_type(argname="argument enrichment_lambda_function", value=enrichment_lambda_function, expected_type=type_hints["enrichment_lambda_function"])
4673
5543
  check_type(argname="argument post_processing_lambda_function", value=post_processing_lambda_function, expected_type=type_hints["post_processing_lambda_function"])
4674
- check_type(argname="argument processing_model_id", value=processing_model_id, expected_type=type_hints["processing_model_id"])
5544
+ check_type(argname="argument processing_bedrock_model", value=processing_bedrock_model, expected_type=type_hints["processing_bedrock_model"])
4675
5545
  check_type(argname="argument processing_prompt", value=processing_prompt, expected_type=type_hints["processing_prompt"])
4676
5546
  check_type(argname="argument step_timeouts", value=step_timeouts, expected_type=type_hints["step_timeouts"])
4677
- check_type(argname="argument use_cross_region_inference", value=use_cross_region_inference, expected_type=type_hints["use_cross_region_inference"])
4678
5547
  self._values: typing.Dict[builtins.str, typing.Any] = {}
4679
5548
  if log_group_data_protection is not None:
4680
5549
  self._values["log_group_data_protection"] = log_group_data_protection
@@ -4698,24 +5567,20 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4698
5567
  self._values["removal_policy"] = removal_policy
4699
5568
  if workflow_timeout is not None:
4700
5569
  self._values["workflow_timeout"] = workflow_timeout
4701
- if classification_model_id is not None:
4702
- self._values["classification_model_id"] = classification_model_id
5570
+ if classification_bedrock_model is not None:
5571
+ self._values["classification_bedrock_model"] = classification_bedrock_model
4703
5572
  if classification_prompt is not None:
4704
5573
  self._values["classification_prompt"] = classification_prompt
4705
- if cross_region_inference_prefix is not None:
4706
- self._values["cross_region_inference_prefix"] = cross_region_inference_prefix
4707
5574
  if enrichment_lambda_function is not None:
4708
5575
  self._values["enrichment_lambda_function"] = enrichment_lambda_function
4709
5576
  if post_processing_lambda_function is not None:
4710
5577
  self._values["post_processing_lambda_function"] = post_processing_lambda_function
4711
- if processing_model_id is not None:
4712
- self._values["processing_model_id"] = processing_model_id
5578
+ if processing_bedrock_model is not None:
5579
+ self._values["processing_bedrock_model"] = processing_bedrock_model
4713
5580
  if processing_prompt is not None:
4714
5581
  self._values["processing_prompt"] = processing_prompt
4715
5582
  if step_timeouts is not None:
4716
5583
  self._values["step_timeouts"] = step_timeouts
4717
- if use_cross_region_inference is not None:
4718
- self._values["use_cross_region_inference"] = use_cross_region_inference
4719
5584
 
4720
5585
  @builtins.property
4721
5586
  def log_group_data_protection(self) -> typing.Optional[LogGroupDataProtectionProps]:
@@ -4841,17 +5706,13 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4841
5706
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4842
5707
 
4843
5708
  @builtins.property
4844
- def classification_model_id(
4845
- self,
4846
- ) -> typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier]:
5709
+ def classification_bedrock_model(self) -> typing.Optional[BedrockModelProps]:
4847
5710
  '''(experimental) Bedrock foundation model for document classification step.
4848
5711
 
4849
- :default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
4850
-
4851
5712
  :stability: experimental
4852
5713
  '''
4853
- result = self._values.get("classification_model_id")
4854
- return typing.cast(typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier], result)
5714
+ result = self._values.get("classification_bedrock_model")
5715
+ return typing.cast(typing.Optional[BedrockModelProps], result)
4855
5716
 
4856
5717
  @builtins.property
4857
5718
  def classification_prompt(self) -> typing.Optional[builtins.str]:
@@ -4866,21 +5727,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4866
5727
  result = self._values.get("classification_prompt")
4867
5728
  return typing.cast(typing.Optional[builtins.str], result)
4868
5729
 
4869
- @builtins.property
4870
- def cross_region_inference_prefix(
4871
- self,
4872
- ) -> typing.Optional[BedrockCrossRegionInferencePrefix]:
4873
- '''(experimental) Prefix for cross-region inference configuration.
4874
-
4875
- Only used when useCrossRegionInference is true.
4876
-
4877
- :default: BedrockCrossRegionInferencePrefix.US
4878
-
4879
- :stability: experimental
4880
- '''
4881
- result = self._values.get("cross_region_inference_prefix")
4882
- return typing.cast(typing.Optional[BedrockCrossRegionInferencePrefix], result)
4883
-
4884
5730
  @builtins.property
4885
5731
  def enrichment_lambda_function(
4886
5732
  self,
@@ -4908,17 +5754,13 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4908
5754
  return typing.cast(typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function], result)
4909
5755
 
4910
5756
  @builtins.property
4911
- def processing_model_id(
4912
- self,
4913
- ) -> typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier]:
5757
+ def processing_bedrock_model(self) -> typing.Optional[BedrockModelProps]:
4914
5758
  '''(experimental) Bedrock foundation model for document extraction step.
4915
5759
 
4916
- :default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
4917
-
4918
5760
  :stability: experimental
4919
5761
  '''
4920
- result = self._values.get("processing_model_id")
4921
- return typing.cast(typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier], result)
5762
+ result = self._values.get("processing_bedrock_model")
5763
+ return typing.cast(typing.Optional[BedrockModelProps], result)
4922
5764
 
4923
5765
  @builtins.property
4924
5766
  def processing_prompt(self) -> typing.Optional[builtins.str]:
@@ -4944,19 +5786,6 @@ class BedrockDocumentProcessingProps(BaseDocumentProcessingProps):
4944
5786
  result = self._values.get("step_timeouts")
4945
5787
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
4946
5788
 
4947
- @builtins.property
4948
- def use_cross_region_inference(self) -> typing.Optional[builtins.bool]:
4949
- '''(experimental) Enable cross-region inference for Bedrock models to improve availability and performance.
4950
-
4951
- When enabled, uses inference profiles instead of direct model invocation.
4952
-
4953
- :default: false
4954
-
4955
- :stability: experimental
4956
- '''
4957
- result = self._values.get("use_cross_region_inference")
4958
- return typing.cast(typing.Optional[builtins.bool], result)
4959
-
4960
5789
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
4961
5790
  return isinstance(rhs, self.__class__) and rhs._values == self._values
4962
5791
 
@@ -4983,16 +5812,14 @@ class AgenticDocumentProcessing(
4983
5812
  scope: _constructs_77d1e7e8.Construct,
4984
5813
  id: builtins.str,
4985
5814
  *,
4986
- processing_agent_parameters: typing.Optional[typing.Union[AgentProps, typing.Dict[builtins.str, typing.Any]]] = None,
4987
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5815
+ processing_agent_parameters: typing.Union[BatchAgentProps, typing.Dict[builtins.str, typing.Any]],
5816
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4988
5817
  classification_prompt: typing.Optional[builtins.str] = None,
4989
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
4990
5818
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4991
5819
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
4992
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5820
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
4993
5821
  processing_prompt: typing.Optional[builtins.str] = None,
4994
5822
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
4995
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
4996
5823
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
4997
5824
  enable_observability: typing.Optional[builtins.bool] = None,
4998
5825
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
@@ -5008,16 +5835,14 @@ class AgenticDocumentProcessing(
5008
5835
  '''
5009
5836
  :param scope: -
5010
5837
  :param id: -
5011
- :param processing_agent_parameters:
5012
- :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5838
+ :param processing_agent_parameters: (experimental) This parameter takes precedence over the ``processingBedrockModel`` parameter.
5839
+ :param classification_bedrock_model: (experimental) Bedrock foundation model for document classification step.
5013
5840
  :param classification_prompt: (experimental) Custom prompt template for document classification. Must include placeholder for document content. Default: DEFAULT_CLASSIFICATION_PROMPT
5014
- :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
5015
5841
  :param enrichment_lambda_function: (experimental) Optional Lambda function for document enrichment step. If provided, will be invoked after extraction with workflow state.
5016
5842
  :param post_processing_lambda_function: (experimental) Optional Lambda function for post-processing step. If provided, will be invoked after enrichment with workflow state.
5017
- :param processing_model_id: (experimental) Bedrock foundation model for document extraction step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5843
+ :param processing_bedrock_model: (experimental) Bedrock foundation model for document extraction step.
5018
5844
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
5019
5845
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
5020
- :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
5021
5846
  :param document_processing_table: (experimental) DynamoDB table for storing document processing metadata and workflow state. If not provided, a new table will be created with DocumentId as partition key.
5022
5847
  :param enable_observability: (experimental) Enable logging and tracing for all supporting resource. Default: false
5023
5848
  :param encryption_key: (experimental) KMS key to be used. Default: A new key would be created
@@ -5038,15 +5863,13 @@ class AgenticDocumentProcessing(
5038
5863
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
5039
5864
  props = AgenticDocumentProcessingProps(
5040
5865
  processing_agent_parameters=processing_agent_parameters,
5041
- classification_model_id=classification_model_id,
5866
+ classification_bedrock_model=classification_bedrock_model,
5042
5867
  classification_prompt=classification_prompt,
5043
- cross_region_inference_prefix=cross_region_inference_prefix,
5044
5868
  enrichment_lambda_function=enrichment_lambda_function,
5045
5869
  post_processing_lambda_function=post_processing_lambda_function,
5046
- processing_model_id=processing_model_id,
5870
+ processing_bedrock_model=processing_bedrock_model,
5047
5871
  processing_prompt=processing_prompt,
5048
5872
  step_timeouts=step_timeouts,
5049
- use_cross_region_inference=use_cross_region_inference,
5050
5873
  document_processing_table=document_processing_table,
5051
5874
  enable_observability=enable_observability,
5052
5875
  encryption_key=encryption_key,
@@ -5092,15 +5915,13 @@ class AgenticDocumentProcessing(
5092
5915
  "network": "network",
5093
5916
  "removal_policy": "removalPolicy",
5094
5917
  "workflow_timeout": "workflowTimeout",
5095
- "classification_model_id": "classificationModelId",
5918
+ "classification_bedrock_model": "classificationBedrockModel",
5096
5919
  "classification_prompt": "classificationPrompt",
5097
- "cross_region_inference_prefix": "crossRegionInferencePrefix",
5098
5920
  "enrichment_lambda_function": "enrichmentLambdaFunction",
5099
5921
  "post_processing_lambda_function": "postProcessingLambdaFunction",
5100
- "processing_model_id": "processingModelId",
5922
+ "processing_bedrock_model": "processingBedrockModel",
5101
5923
  "processing_prompt": "processingPrompt",
5102
5924
  "step_timeouts": "stepTimeouts",
5103
- "use_cross_region_inference": "useCrossRegionInference",
5104
5925
  "processing_agent_parameters": "processingAgentParameters",
5105
5926
  },
5106
5927
  )
@@ -5119,16 +5940,14 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5119
5940
  network: typing.Optional[Network] = None,
5120
5941
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
5121
5942
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5122
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5943
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
5123
5944
  classification_prompt: typing.Optional[builtins.str] = None,
5124
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
5125
5945
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
5126
5946
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
5127
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
5947
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
5128
5948
  processing_prompt: typing.Optional[builtins.str] = None,
5129
5949
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
5130
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
5131
- processing_agent_parameters: typing.Optional[typing.Union[AgentProps, typing.Dict[builtins.str, typing.Any]]] = None,
5950
+ processing_agent_parameters: typing.Union[BatchAgentProps, typing.Dict[builtins.str, typing.Any]],
5132
5951
  ) -> None:
5133
5952
  '''
5134
5953
  :param log_group_data_protection: (experimental) Data protection related configuration. Default: a new KMS key would be generated
@@ -5142,23 +5961,25 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5142
5961
  :param network: (experimental) Resources that can run inside a VPC will follow the provided network configuration. Default: resources will run outside of a VPC
5143
5962
  :param removal_policy: (experimental) Removal policy for created resources (bucket, table, queue). Default: RemovalPolicy.DESTROY
5144
5963
  :param workflow_timeout: (experimental) Maximum execution time for the Step Functions workflow. Default: Duration.minutes(30)
5145
- :param classification_model_id: (experimental) Bedrock foundation model for document classification step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5964
+ :param classification_bedrock_model: (experimental) Bedrock foundation model for document classification step.
5146
5965
  :param classification_prompt: (experimental) Custom prompt template for document classification. Must include placeholder for document content. Default: DEFAULT_CLASSIFICATION_PROMPT
5147
- :param cross_region_inference_prefix: (experimental) Prefix for cross-region inference configuration. Only used when useCrossRegionInference is true. Default: BedrockCrossRegionInferencePrefix.US
5148
5966
  :param enrichment_lambda_function: (experimental) Optional Lambda function for document enrichment step. If provided, will be invoked after extraction with workflow state.
5149
5967
  :param post_processing_lambda_function: (experimental) Optional Lambda function for post-processing step. If provided, will be invoked after enrichment with workflow state.
5150
- :param processing_model_id: (experimental) Bedrock foundation model for document extraction step. Default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5968
+ :param processing_bedrock_model: (experimental) Bedrock foundation model for document extraction step.
5151
5969
  :param processing_prompt: (experimental) Custom prompt template for document extraction. Must include placeholder for document content and classification result. Default: DEFAULT_EXTRACTION_PROMPT
5152
5970
  :param step_timeouts: (experimental) Timeout for individual Step Functions tasks (classification, extraction, etc.). Default: Duration.minutes(5)
5153
- :param use_cross_region_inference: (experimental) Enable cross-region inference for Bedrock models to improve availability and performance. When enabled, uses inference profiles instead of direct model invocation. Default: false
5154
- :param processing_agent_parameters:
5971
+ :param processing_agent_parameters: (experimental) This parameter takes precedence over the ``processingBedrockModel`` parameter.
5155
5972
 
5156
5973
  :stability: experimental
5157
5974
  '''
5158
5975
  if isinstance(log_group_data_protection, dict):
5159
5976
  log_group_data_protection = LogGroupDataProtectionProps(**log_group_data_protection)
5977
+ if isinstance(classification_bedrock_model, dict):
5978
+ classification_bedrock_model = BedrockModelProps(**classification_bedrock_model)
5979
+ if isinstance(processing_bedrock_model, dict):
5980
+ processing_bedrock_model = BedrockModelProps(**processing_bedrock_model)
5160
5981
  if isinstance(processing_agent_parameters, dict):
5161
- processing_agent_parameters = AgentProps(**processing_agent_parameters)
5982
+ processing_agent_parameters = BatchAgentProps(**processing_agent_parameters)
5162
5983
  if __debug__:
5163
5984
  type_hints = typing.get_type_hints(_typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f83a72f4)
5164
5985
  check_type(argname="argument log_group_data_protection", value=log_group_data_protection, expected_type=type_hints["log_group_data_protection"])
@@ -5172,17 +5993,17 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5172
5993
  check_type(argname="argument network", value=network, expected_type=type_hints["network"])
5173
5994
  check_type(argname="argument removal_policy", value=removal_policy, expected_type=type_hints["removal_policy"])
5174
5995
  check_type(argname="argument workflow_timeout", value=workflow_timeout, expected_type=type_hints["workflow_timeout"])
5175
- check_type(argname="argument classification_model_id", value=classification_model_id, expected_type=type_hints["classification_model_id"])
5996
+ check_type(argname="argument classification_bedrock_model", value=classification_bedrock_model, expected_type=type_hints["classification_bedrock_model"])
5176
5997
  check_type(argname="argument classification_prompt", value=classification_prompt, expected_type=type_hints["classification_prompt"])
5177
- check_type(argname="argument cross_region_inference_prefix", value=cross_region_inference_prefix, expected_type=type_hints["cross_region_inference_prefix"])
5178
5998
  check_type(argname="argument enrichment_lambda_function", value=enrichment_lambda_function, expected_type=type_hints["enrichment_lambda_function"])
5179
5999
  check_type(argname="argument post_processing_lambda_function", value=post_processing_lambda_function, expected_type=type_hints["post_processing_lambda_function"])
5180
- check_type(argname="argument processing_model_id", value=processing_model_id, expected_type=type_hints["processing_model_id"])
6000
+ check_type(argname="argument processing_bedrock_model", value=processing_bedrock_model, expected_type=type_hints["processing_bedrock_model"])
5181
6001
  check_type(argname="argument processing_prompt", value=processing_prompt, expected_type=type_hints["processing_prompt"])
5182
6002
  check_type(argname="argument step_timeouts", value=step_timeouts, expected_type=type_hints["step_timeouts"])
5183
- check_type(argname="argument use_cross_region_inference", value=use_cross_region_inference, expected_type=type_hints["use_cross_region_inference"])
5184
6003
  check_type(argname="argument processing_agent_parameters", value=processing_agent_parameters, expected_type=type_hints["processing_agent_parameters"])
5185
- self._values: typing.Dict[builtins.str, typing.Any] = {}
6004
+ self._values: typing.Dict[builtins.str, typing.Any] = {
6005
+ "processing_agent_parameters": processing_agent_parameters,
6006
+ }
5186
6007
  if log_group_data_protection is not None:
5187
6008
  self._values["log_group_data_protection"] = log_group_data_protection
5188
6009
  if metric_namespace is not None:
@@ -5205,26 +6026,20 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5205
6026
  self._values["removal_policy"] = removal_policy
5206
6027
  if workflow_timeout is not None:
5207
6028
  self._values["workflow_timeout"] = workflow_timeout
5208
- if classification_model_id is not None:
5209
- self._values["classification_model_id"] = classification_model_id
6029
+ if classification_bedrock_model is not None:
6030
+ self._values["classification_bedrock_model"] = classification_bedrock_model
5210
6031
  if classification_prompt is not None:
5211
6032
  self._values["classification_prompt"] = classification_prompt
5212
- if cross_region_inference_prefix is not None:
5213
- self._values["cross_region_inference_prefix"] = cross_region_inference_prefix
5214
6033
  if enrichment_lambda_function is not None:
5215
6034
  self._values["enrichment_lambda_function"] = enrichment_lambda_function
5216
6035
  if post_processing_lambda_function is not None:
5217
6036
  self._values["post_processing_lambda_function"] = post_processing_lambda_function
5218
- if processing_model_id is not None:
5219
- self._values["processing_model_id"] = processing_model_id
6037
+ if processing_bedrock_model is not None:
6038
+ self._values["processing_bedrock_model"] = processing_bedrock_model
5220
6039
  if processing_prompt is not None:
5221
6040
  self._values["processing_prompt"] = processing_prompt
5222
6041
  if step_timeouts is not None:
5223
6042
  self._values["step_timeouts"] = step_timeouts
5224
- if use_cross_region_inference is not None:
5225
- self._values["use_cross_region_inference"] = use_cross_region_inference
5226
- if processing_agent_parameters is not None:
5227
- self._values["processing_agent_parameters"] = processing_agent_parameters
5228
6043
 
5229
6044
  @builtins.property
5230
6045
  def log_group_data_protection(self) -> typing.Optional[LogGroupDataProtectionProps]:
@@ -5350,17 +6165,13 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5350
6165
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5351
6166
 
5352
6167
  @builtins.property
5353
- def classification_model_id(
5354
- self,
5355
- ) -> typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier]:
6168
+ def classification_bedrock_model(self) -> typing.Optional[BedrockModelProps]:
5356
6169
  '''(experimental) Bedrock foundation model for document classification step.
5357
6170
 
5358
- :default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5359
-
5360
6171
  :stability: experimental
5361
6172
  '''
5362
- result = self._values.get("classification_model_id")
5363
- return typing.cast(typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier], result)
6173
+ result = self._values.get("classification_bedrock_model")
6174
+ return typing.cast(typing.Optional[BedrockModelProps], result)
5364
6175
 
5365
6176
  @builtins.property
5366
6177
  def classification_prompt(self) -> typing.Optional[builtins.str]:
@@ -5375,21 +6186,6 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5375
6186
  result = self._values.get("classification_prompt")
5376
6187
  return typing.cast(typing.Optional[builtins.str], result)
5377
6188
 
5378
- @builtins.property
5379
- def cross_region_inference_prefix(
5380
- self,
5381
- ) -> typing.Optional[BedrockCrossRegionInferencePrefix]:
5382
- '''(experimental) Prefix for cross-region inference configuration.
5383
-
5384
- Only used when useCrossRegionInference is true.
5385
-
5386
- :default: BedrockCrossRegionInferencePrefix.US
5387
-
5388
- :stability: experimental
5389
- '''
5390
- result = self._values.get("cross_region_inference_prefix")
5391
- return typing.cast(typing.Optional[BedrockCrossRegionInferencePrefix], result)
5392
-
5393
6189
  @builtins.property
5394
6190
  def enrichment_lambda_function(
5395
6191
  self,
@@ -5417,17 +6213,13 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5417
6213
  return typing.cast(typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function], result)
5418
6214
 
5419
6215
  @builtins.property
5420
- def processing_model_id(
5421
- self,
5422
- ) -> typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier]:
6216
+ def processing_bedrock_model(self) -> typing.Optional[BedrockModelProps]:
5423
6217
  '''(experimental) Bedrock foundation model for document extraction step.
5424
6218
 
5425
- :default: FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0
5426
-
5427
6219
  :stability: experimental
5428
6220
  '''
5429
- result = self._values.get("processing_model_id")
5430
- return typing.cast(typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier], result)
6221
+ result = self._values.get("processing_bedrock_model")
6222
+ return typing.cast(typing.Optional[BedrockModelProps], result)
5431
6223
 
5432
6224
  @builtins.property
5433
6225
  def processing_prompt(self) -> typing.Optional[builtins.str]:
@@ -5454,25 +6246,14 @@ class AgenticDocumentProcessingProps(BedrockDocumentProcessingProps):
5454
6246
  return typing.cast(typing.Optional[_aws_cdk_ceddda9d.Duration], result)
5455
6247
 
5456
6248
  @builtins.property
5457
- def use_cross_region_inference(self) -> typing.Optional[builtins.bool]:
5458
- '''(experimental) Enable cross-region inference for Bedrock models to improve availability and performance.
5459
-
5460
- When enabled, uses inference profiles instead of direct model invocation.
5461
-
5462
- :default: false
6249
+ def processing_agent_parameters(self) -> BatchAgentProps:
6250
+ '''(experimental) This parameter takes precedence over the ``processingBedrockModel`` parameter.
5463
6251
 
5464
- :stability: experimental
5465
- '''
5466
- result = self._values.get("use_cross_region_inference")
5467
- return typing.cast(typing.Optional[builtins.bool], result)
5468
-
5469
- @builtins.property
5470
- def processing_agent_parameters(self) -> typing.Optional[AgentProps]:
5471
- '''
5472
6252
  :stability: experimental
5473
6253
  '''
5474
6254
  result = self._values.get("processing_agent_parameters")
5475
- return typing.cast(typing.Optional[AgentProps], result)
6255
+ assert result is not None, "Required property 'processing_agent_parameters' is missing"
6256
+ return typing.cast(BatchAgentProps, result)
5476
6257
 
5477
6258
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
5478
6259
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -5490,20 +6271,28 @@ __all__ = [
5490
6271
  "AccessLog",
5491
6272
  "AccessLogProps",
5492
6273
  "AdditionalDistributionProps",
5493
- "AgentProps",
6274
+ "AgentDefinitionProps",
6275
+ "AgentToolsLocationDefinition",
5494
6276
  "AgenticDocumentProcessing",
5495
6277
  "AgenticDocumentProcessingProps",
6278
+ "BaseAgent",
6279
+ "BaseAgentProps",
5496
6280
  "BaseDocumentProcessing",
5497
6281
  "BaseDocumentProcessingProps",
6282
+ "BatchAgent",
6283
+ "BatchAgentProps",
5498
6284
  "BedrockCrossRegionInferencePrefix",
5499
6285
  "BedrockDocumentProcessing",
5500
6286
  "BedrockDocumentProcessingProps",
6287
+ "BedrockModelProps",
6288
+ "BedrockModelUtils",
5501
6289
  "CloudfrontDistributionObservabilityPropertyInjector",
5502
6290
  "CustomDomainConfig",
5503
6291
  "DataLoader",
5504
6292
  "DataLoaderProps",
5505
6293
  "DatabaseConfig",
5506
6294
  "DatabaseEngine",
6295
+ "DefaultAgentConfig",
5507
6296
  "DefaultDocumentProcessingConfig",
5508
6297
  "DefaultObservabilityConfig",
5509
6298
  "DefaultRuntimes",
@@ -5521,6 +6310,7 @@ __all__ = [
5521
6310
  "LambdaLogsPermissionsResult",
5522
6311
  "LambdaObservabilityPropertyInjector",
5523
6312
  "LogGroupDataProtectionProps",
6313
+ "LogGroupDataProtectionUtils",
5524
6314
  "Network",
5525
6315
  "NetworkProps",
5526
6316
  "ObservableProps",
@@ -5578,12 +6368,78 @@ def _typecheckingstub__14d3ed5928e5166082cd47a907ab754473c20bb045dc424135b469081
5578
6368
  """Type checking stubs"""
5579
6369
  pass
5580
6370
 
5581
- def _typecheckingstub__e1a82500ee072f393cd9a2ada2f9a3434219c7a51186f26fbba3061bd896d11e(
6371
+ def _typecheckingstub__4a2d1deab0cc9bf96473ffb32138a2c564c47ae7382fe5d2d1f0e43da3324272(
5582
6372
  *,
5583
- agent_system_prompt: typing.Optional[builtins.str] = None,
6373
+ bedrock_model: typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]],
6374
+ system_prompt: _aws_cdk_aws_s3_assets_ceddda9d.Asset,
6375
+ additional_policy_statements_for_tools: typing.Optional[typing.Sequence[_aws_cdk_aws_iam_ceddda9d.PolicyStatement]] = None,
5584
6376
  lambda_layers: typing.Optional[typing.Sequence[_aws_cdk_aws_lambda_ceddda9d.LayerVersion]] = None,
5585
- tools_bucket: typing.Optional[_aws_cdk_aws_s3_ceddda9d.Bucket] = None,
5586
- tools_location: typing.Optional[typing.Sequence[builtins.str]] = None,
6377
+ tools: typing.Optional[typing.Sequence[_aws_cdk_aws_s3_assets_ceddda9d.Asset]] = None,
6378
+ ) -> None:
6379
+ """Type checking stubs"""
6380
+ pass
6381
+
6382
+ def _typecheckingstub__127edbe188000e5bd850f207a22867fb37ca32772d05138c8caeec887b302f84(
6383
+ *,
6384
+ bucket_name: builtins.str,
6385
+ is_file: builtins.bool,
6386
+ is_zip_archive: builtins.bool,
6387
+ key: builtins.str,
6388
+ ) -> None:
6389
+ """Type checking stubs"""
6390
+ pass
6391
+
6392
+ def _typecheckingstub__71b734ed2750632299f59fd7513ccde0ee5f9974b68f8c52b53e2255cdee86ff(
6393
+ scope: _constructs_77d1e7e8.Construct,
6394
+ id: builtins.str,
6395
+ *,
6396
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
6397
+ agent_name: builtins.str,
6398
+ enable_observability: typing.Optional[builtins.bool] = None,
6399
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6400
+ network: typing.Optional[Network] = None,
6401
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6402
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6403
+ metric_namespace: typing.Optional[builtins.str] = None,
6404
+ metric_service_name: typing.Optional[builtins.str] = None,
6405
+ ) -> None:
6406
+ """Type checking stubs"""
6407
+ pass
6408
+
6409
+ def _typecheckingstub__c2677306b18b77c5114d824ae734b83ac837c5ea4a5b8805948f0388f1dd7995(
6410
+ scope: _constructs_77d1e7e8.Construct,
6411
+ id: builtins.str,
6412
+ *,
6413
+ prompt: builtins.str,
6414
+ expect_json: typing.Optional[builtins.bool] = None,
6415
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
6416
+ agent_name: builtins.str,
6417
+ enable_observability: typing.Optional[builtins.bool] = None,
6418
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6419
+ network: typing.Optional[Network] = None,
6420
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6421
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6422
+ metric_namespace: typing.Optional[builtins.str] = None,
6423
+ metric_service_name: typing.Optional[builtins.str] = None,
6424
+ ) -> None:
6425
+ """Type checking stubs"""
6426
+ pass
6427
+
6428
+ def _typecheckingstub__e45242c855c6631d66b287b02966cc10c7006e63b282779a6fdb35ce0a2a7a67(
6429
+ *,
6430
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6431
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
6432
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
6433
+ ) -> None:
6434
+ """Type checking stubs"""
6435
+ pass
6436
+
6437
+ def _typecheckingstub__c2d6dd904193a96951d351d9b9f88371b9b85f9f44a00b0cbdbfba9f24849527(
6438
+ scope: _constructs_77d1e7e8.Construct,
6439
+ *,
6440
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6441
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
6442
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
5587
6443
  ) -> None:
5588
6444
  """Type checking stubs"""
5589
6445
  pass
@@ -5890,6 +6746,14 @@ def _typecheckingstub__544372751dab1bedee4ed043bef50312abd2658c1142e4b4809c06171
5890
6746
  """Type checking stubs"""
5891
6747
  pass
5892
6748
 
6749
+ def _typecheckingstub__e3a45e54ca44da7f036d13ce54f925e2a16d4e1ae6f2df04d64a1f10ca0133f0(
6750
+ scope: _constructs_77d1e7e8.Construct,
6751
+ props: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6752
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6753
+ ) -> None:
6754
+ """Type checking stubs"""
6755
+ pass
6756
+
5893
6757
  def _typecheckingstub__6ad9a3df68ffea56f493c494b7c642fca53d11a7de99864bb5e94dffe00ed330(
5894
6758
  scope: _constructs_77d1e7e8.Construct,
5895
6759
  id: builtins.str,
@@ -6022,6 +6886,21 @@ def _typecheckingstub__011b55520774139b52c951d9cc59273f686e377b5415ee42a57650da5
6022
6886
  """Type checking stubs"""
6023
6887
  pass
6024
6888
 
6889
+ def _typecheckingstub__feb650555d9014f75886d26d16787c0c2e83a042e7e61844bf4d21c890ce479c(
6890
+ *,
6891
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6892
+ metric_namespace: typing.Optional[builtins.str] = None,
6893
+ metric_service_name: typing.Optional[builtins.str] = None,
6894
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
6895
+ agent_name: builtins.str,
6896
+ enable_observability: typing.Optional[builtins.bool] = None,
6897
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6898
+ network: typing.Optional[Network] = None,
6899
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6900
+ ) -> None:
6901
+ """Type checking stubs"""
6902
+ pass
6903
+
6025
6904
  def _typecheckingstub__117c249a26f3e7532983afc9123fadff3e20effcc69408df0f45a03eb720ea8a(
6026
6905
  scope: _constructs_77d1e7e8.Construct,
6027
6906
  id: builtins.str,
@@ -6064,19 +6943,34 @@ def _typecheckingstub__75e07bce24d48571be58cad69f751b10a17a738fdb9db601acdc689ff
6064
6943
  """Type checking stubs"""
6065
6944
  pass
6066
6945
 
6946
+ def _typecheckingstub__30511d5990f52f2808903d144bad5a5c502c00b0b8c98b4fd52a3df61c18b19d(
6947
+ *,
6948
+ log_group_data_protection: typing.Optional[typing.Union[LogGroupDataProtectionProps, typing.Dict[builtins.str, typing.Any]]] = None,
6949
+ metric_namespace: typing.Optional[builtins.str] = None,
6950
+ metric_service_name: typing.Optional[builtins.str] = None,
6951
+ agent_definition: typing.Union[AgentDefinitionProps, typing.Dict[builtins.str, typing.Any]],
6952
+ agent_name: builtins.str,
6953
+ enable_observability: typing.Optional[builtins.bool] = None,
6954
+ encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
6955
+ network: typing.Optional[Network] = None,
6956
+ removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6957
+ prompt: builtins.str,
6958
+ expect_json: typing.Optional[builtins.bool] = None,
6959
+ ) -> None:
6960
+ """Type checking stubs"""
6961
+ pass
6962
+
6067
6963
  def _typecheckingstub__7393f9c6b2af93f7d8668b32cec54ba8c77259644ab01f57b3fbd50c78923134(
6068
6964
  scope: _constructs_77d1e7e8.Construct,
6069
6965
  id: builtins.str,
6070
6966
  *,
6071
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
6967
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6072
6968
  classification_prompt: typing.Optional[builtins.str] = None,
6073
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6074
6969
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6075
6970
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6076
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
6971
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6077
6972
  processing_prompt: typing.Optional[builtins.str] = None,
6078
6973
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6079
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
6080
6974
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
6081
6975
  enable_observability: typing.Optional[builtins.bool] = None,
6082
6976
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
@@ -6093,8 +6987,11 @@ def _typecheckingstub__7393f9c6b2af93f7d8668b32cec54ba8c77259644ab01f57b3fbd50c7
6093
6987
  pass
6094
6988
 
6095
6989
  def _typecheckingstub__b765dc24cd888585470934e534f4d8e979ddebd46e42601cc8b50c73499e7d4e(
6096
- fm_model: _aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier,
6097
6990
  id: builtins.str,
6991
+ *,
6992
+ cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6993
+ fm_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
6994
+ use_cross_region_inference: typing.Optional[builtins.bool] = None,
6098
6995
  ) -> None:
6099
6996
  """Type checking stubs"""
6100
6997
  pass
@@ -6112,15 +7009,13 @@ def _typecheckingstub__9606a6418d69bde20176ec33b27eaa22c0e0cdb6b105d382e9d038566
6112
7009
  network: typing.Optional[Network] = None,
6113
7010
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6114
7011
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6115
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7012
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6116
7013
  classification_prompt: typing.Optional[builtins.str] = None,
6117
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6118
7014
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6119
7015
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6120
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7016
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6121
7017
  processing_prompt: typing.Optional[builtins.str] = None,
6122
7018
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6123
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
6124
7019
  ) -> None:
6125
7020
  """Type checking stubs"""
6126
7021
  pass
@@ -6129,16 +7024,14 @@ def _typecheckingstub__b7f396236f637ec7234d81b355cf773497392b537455f3d888c4b7170
6129
7024
  scope: _constructs_77d1e7e8.Construct,
6130
7025
  id: builtins.str,
6131
7026
  *,
6132
- processing_agent_parameters: typing.Optional[typing.Union[AgentProps, typing.Dict[builtins.str, typing.Any]]] = None,
6133
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7027
+ processing_agent_parameters: typing.Union[BatchAgentProps, typing.Dict[builtins.str, typing.Any]],
7028
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6134
7029
  classification_prompt: typing.Optional[builtins.str] = None,
6135
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6136
7030
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6137
7031
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6138
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7032
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6139
7033
  processing_prompt: typing.Optional[builtins.str] = None,
6140
7034
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6141
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
6142
7035
  document_processing_table: typing.Optional[_aws_cdk_aws_dynamodb_ceddda9d.Table] = None,
6143
7036
  enable_observability: typing.Optional[builtins.bool] = None,
6144
7037
  encryption_key: typing.Optional[_aws_cdk_aws_kms_ceddda9d.Key] = None,
@@ -6167,16 +7060,14 @@ def _typecheckingstub__da9ccab0035a06d18b5aa3f2de69201b3bbd6e30f7707a291977a0e4f
6167
7060
  network: typing.Optional[Network] = None,
6168
7061
  removal_policy: typing.Optional[_aws_cdk_ceddda9d.RemovalPolicy] = None,
6169
7062
  workflow_timeout: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6170
- classification_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7063
+ classification_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6171
7064
  classification_prompt: typing.Optional[builtins.str] = None,
6172
- cross_region_inference_prefix: typing.Optional[BedrockCrossRegionInferencePrefix] = None,
6173
7065
  enrichment_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6174
7066
  post_processing_lambda_function: typing.Optional[_aws_cdk_aws_lambda_ceddda9d.Function] = None,
6175
- processing_model_id: typing.Optional[_aws_cdk_aws_bedrock_ceddda9d.FoundationModelIdentifier] = None,
7067
+ processing_bedrock_model: typing.Optional[typing.Union[BedrockModelProps, typing.Dict[builtins.str, typing.Any]]] = None,
6176
7068
  processing_prompt: typing.Optional[builtins.str] = None,
6177
7069
  step_timeouts: typing.Optional[_aws_cdk_ceddda9d.Duration] = None,
6178
- use_cross_region_inference: typing.Optional[builtins.bool] = None,
6179
- processing_agent_parameters: typing.Optional[typing.Union[AgentProps, typing.Dict[builtins.str, typing.Any]]] = None,
7070
+ processing_agent_parameters: typing.Union[BatchAgentProps, typing.Dict[builtins.str, typing.Any]],
6180
7071
  ) -> None:
6181
7072
  """Type checking stubs"""
6182
7073
  pass