Changelog
All notable changes to this project will be documented in this file.
The format follows Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
Added
- Apache-2.0 license —
LICENSEandNOTICEfiles added; the project is now published as open source under the Apache License 2.0. - GitHub Pages documentation site — reorganized into topic sections (concepts, blueprints, inference, observability, runtime, infrastructure, CLI, SDK, tools, policy) with pretty permalinks.
- Provider-agnostic inference —
_build_model_config()inloader.pydispatches onModelConfig.providerviamatch/case. Supported providers:bedrock(default),anthropic,litellm,vertex(all Strands SDK providers).base_url,api_key_env, andextra_headers_env(generic header-to-env map) are configurable per blueprint. - LiteLLM
openai/prefix auto-injection — whenbase_urlis set, the loader auto-prefixes the model ID withopenai/to prevent LiteLLM’s provider auto-detection from bypassing the proxy. extra_headers_envsupport — generic header→env map onModelConfigenabling per-request headers (e.g. Cloudflare Access service tokens) for any OpenAI-compatible backend.- Presidio PII guardrail —
PresidioGuardrailHookprovides local, MIT-licensed PII redaction via Microsoft Presidio. Configurable viaobservability.data_protection.provider: presidio,presidio_entities, andpresidio_languageblueprint keys. Works with any inference provider. - Langfuse evaluation client —
LangfuseEvaluationClientas an alternative to the AgentCore evaluator. Activated byevaluation.provider: langfusein the blueprint. RequiresLANGFUSE_HOST,LANGFUSE_PUBLIC_KEY,LANGFUSE_SECRET_KEY. observability.enabledmaster toggle — whenfalse, no Langfuse, audit log, structured logger, or cost tracker hooks register.CostTrackerbuilt-in pricing defaults — coversclaude-sonnet-4-6andclaude-haiku-4-5so cost tracking works on LiteLLM with zero configuration.MODEL_PRICINGandMODEL_DEFAULT_PRICINGenv vars override. DeprecatedBEDROCK_MODEL_PRICING/BEDROCK_DEFAULT_PRICINGaliases still accepted.default_inputfor scheduled triggers — blueprints can declare a static default payload for EventBridge-scheduled invocations.event_modeoverride — Lambda handler and Step Functions payload accept anevent_modekey to override the blueprint execution mode at runtime.- Gate node support in graph builder — gate/decision nodes are filtered from
GraphBuilderedges;agent_refisNonefor gate nodes and handled without crashing. extra_s3_read_bucket_arnsTerraform variable — grants domain agents read access to additional S3 buckets beyond the platform artifact bucket.- Lambda wrapper for agent invocation — routes all agent task states through a Lambda wrapper, bypassing the 60-second Step Functions SDK timeout for long-running agents.
timeout_secondsandheartbeat_secondson SFN agent task states — configurable per agent in the Step Functions workflow module.- OTel metrics and logs exporters —
enable_otel_metricsandenable_otel_logsblueprint flags; stdlibloggingbridge into the OTel logs pipeline. - EventBridge audit logging — optional audit event emission on each agent invocation.
- POST /api/artifacts endpoint — REST API gateway route for direct artifact registration.
- Artifacts table name and ARN outputs — platform Terraform module exposes DynamoDB artifact table name and ARN as outputs for downstream consumers.
- MCP Runtime authorizer safeguards — input validation and auth checks in the MCP Runtime invocation path.
agent_core.mcpsubpackage — shared MCP server infrastructure (BaseMCPServer) used by the artifacts MCP server and domain MCP servers.- SonarQube CI integration —
sonar-project.propertiesconfigured for multi-module paths; all ratings at A, ≥ 80 % coverage baseline. - Self-hosted CI runners — all GitHub Actions workflows (
ci-core,ci-prompts,ci-artifacts, CI pages deploy) migrated to self-hosted runners. - Hermetic Lambda layer build —
platform-depslayer is built entirely within Terraform using the Pythonzipfilemodule; no dependency on the hostzipbinary.
Changed
- Structured output enforcement —
StructuredOutputEnforcerfallback removed fromloader.py; Strands native structured output is used for all providers (resolves Bug B). - Graph coordinator synthesis — coordinator now performs a synthesis turn after all graph nodes complete (resolves Bug F + Bug A).
- Langfuse trace input/output — agent reasoning is now captured in the Langfuse trace
inputandoutputfields (resolves Bug H). - OTel flush at invocation end — logs and metrics are force-flushed at the end of each Lambda invocation (resolves Bug G).
model_idenv template expansion — template variables (including${VAR:-default}syntax) are expanded before the model ID is passed to the enforcer or model factory.- LiteLLM version pin —
litellm>=1.83.0,<2(versions 1.82.7–1.82.8 were the CVE-2026-33634 supply-chain attack). - CI build/test/publish — pipelines now run from
devbranch, notmain. - Org and repo rename —
the-cloud-clock-work→The-Cloud-Clockwork; module prefix aligned to match the updated org slug across all modules and configurations. LOG_ONLYpolicy mode — policy engine creation is skipped entirely when mode isLOG_ONLY(no Cedar policy compile).AGENT_INVOKE_TIMEOUT— bumped from 600 s to 840 s for long-running graph agents.DirectMCPClientsession ID — padded to meet the AgentCore minimum length requirement.- Parallel SFN branches — always routed through the Lambda wrapper;
jsondecode(jsonencode())applied to erase Terraform type mismatches in parallel branch parameters. INVOKE_REGIONenv var — replaces the reservedAWS_DEFAULT_REGIONin agent task definitions.
Fixed
- Marshal walker tightened to skip
toolUseblocks not matching the schema artifact name, preventing false-positive artifact extraction. create_artifacttool name matched with MCP namespace prefix.- Conversation history last message scanned for post-hook
toolUseblocks. StructuredOutputEnforcermode order corrected toTOOLSfirst withJSONfallback.- Artifacts handler updated to support the API Gateway Lambda proxy event format alongside direct invocation.
- Artifacts handler supports both sync and async MCP tool functions.
- ECR image digest used in
container_urito force re-pull on rollout. - Python 3.11-safe f-strings in CLI module; unused imports removed (ruff).
ruffconfiguration consolidated to repo root; all lint errors resolved across all modules.- Dead
generate_otel_env()function removed fromconfig_gen.
Security
- CVE-2026-33634 — LiteLLM versions 1.82.7 and 1.82.8 were a supply-chain attack; minimum version pinned to 1.83.0 in
core/pyproject.toml.