Release 1.11.1
Release Date: July 24, 2026
Previous Release: v1.11.0 (July 24, 2026)
π No CDK deploy required this release β backend-only, no new AWS resources, no dependency changes. Ship the artifact-render Lambda via
backend.yml. No per-environment action and no data migration: existing Markdown artifacts are corrected at download time.
Highlights
v1.11.1 is a focused patch fixing Markdown artifact downloads. Saving a Markdown artifact previously produced a .html file containing the render scaffolding instead of the .md source the user authored. Downloads now recover the original Markdown and save it as a proper .md file. Preview-panel rendering is unchanged, and the fix applies to artifacts created before this release with no re-storage.
π Bug fix
- Markdown artifacts downloaded as HTML wrapper instead of
.mdsource. Markdown artifact records keepcontent_type=text/markdown, but S3 holds the writer's HTML render wrapper β the raw Markdown base64-embedded in a<script id="md-src">block. The download path served those wrapper bytes verbatim and mappedtext/markdownβhtml, so "save" yielded a.htmlfile of the render scaffolding rather than the authored document. On download (?download=1) of a Markdown record,backend/src/lambdas/artifact_render/handler.pynow recovers the embedded raw Markdown and serves it astext/markdownwith a.mdextension. Because the source is already embedded in stored artifacts, this works for existing records with no re-storage. If the embed marker is ever absent (older render or template drift), the handler falls back to the wrapper bytes as.htmlso the download never fails. Rendering in the preview panel is untouched (#726)
π Deployment notes
- No CDK deploy needed β no new AWS resources, no infrastructure changes, no dependency changes. Deploy the artifact-render image via
backend.yml; the fix is entirely within the artifact-render Lambda. - No per-environment action β no catalog seeding, RBAC grants, or feature flags. Existing Markdown artifacts are corrected on download automatically.
π No CDK deploy required this release β no new AWS resources, no dependency changes, no infrastructure edits. Ship backend code via
backend.ymland the SPA viafrontend-deploy.yml. Per-environment action: two new tool catalog entries ("PowerPoint Presentations", "File Workspace") must be seeded and granted via RBAC before users can enable them β see Deployment notes.
Highlights
v1.11.0 adds two new agent capabilities to chat. First, a PowerPoint presentation toolset β the agent can create, edit, read, and list real .pptx decks, built with python-pptx inside the sandboxed Code Interpreter and delivered through the chat Files panel with a download link β completing the office-document trio alongside the existing Excel and Word tools. Second, a generic File Workspace toolset that gives the agent a first-class way to list, read, and save text files (Markdown, CSV, JSON) in a conversation's workspace, over the same user-files store. Both ship as single catalog toggles, off by default. The release also fixes two rendering bugs: Markdown artifacts that came out as raw #/** source when authored under the default HTML type, and empty "Thinking" collapsibles that appeared on conversation reload for signature-only reasoning blocks.
PowerPoint presentations in chat
Users can ask the agent to build or revise real PowerPoint decks mid-conversation β slide outlines, briefing decks, templated layouts β and get a downloadable .pptx back in the chat's Files panel. The capability mirrors the Excel and Word toolsets: one admin toggle provisions the whole round-trip.
Backend
agents/builtin_tools/powerpoint_presentation_tool.py(750+ lines) β five tool factories:make_create_powerpoint_presentation_tool,make_modify_powerpoint_presentation_tool,make_list_powerpoint_presentations_tool,make_read_powerpoint_presentation_tool, andmake_list_powerpoint_layouts_tool. Generation and edits run python-pptx inside the sandboxed AgentCore Code Interpreter; nothing executes in the API container, and identity is captured by closure (same pattern as the Word/Excel tools, since the runtime does not populateToolContext).apis/inference_api/chat/routes.pyβ_build_powerpoint_presentation_toolsinjects the toolset at runtime when the catalog toggle is enabled. One catalog entry ("PowerPoint Presentations", gate keycreate_powerpoint_presentation,enabledByDefault: false) provisions all five tools.- Generated files persist to the user-files bucket (
S3_USER_FILES_BUCKET_NAME) and surface in the session's Files panel.
Frontend
- The generic
file-download-renderercomponent (introduced in v1.10.0 for Word/Excel) now also handles.pptx, so generated presentations render through the same inline download card.
File Workspace toolset
Gives the agent a durable, generic file surface over a conversation's workspace β distinct from the format-specific office tools. The model can enumerate what files exist, read uploaded text files on demand instead of front-loading them into context, and save text deliverables back to the conversation.
Backend
agents/builtin_tools/workspace_tools.pyβ three tools:workspace_list,workspace_read,workspace_write. Reads uploaded text files on demand and writes text deliverables (Markdown, CSV, JSON) to the user-files store, where they appear in the chat Files panel with a download link.apis/shared/files/workspace.py(430+ lines) β new shared module implementing the workspace read/write surface over the user-files store.apis/shared/feature_flags.pyβworkspace_tools_enabled()gates the feature per environment viaWORKSPACE_TOOLS_ENABLED(default ON, kill switch β only the literalfalsedisables). This is independent of theworkspace_filescatalog entry, which governs who may use the tools via RBAC.apis/shared/files/models.pyβ file records gain a display-onlysourceprovenance field ("upload" or the id of the tool that produced the file); never part of an access decision.apis/inference_api/chat/routes.pyβ_build_workspace_toolsinjects the set when the catalog toggle is enabled. One catalog entry ("File Workspace", gate keyworkspace_files,enabledByDefault: false).
Test Coverage
430+ lines of new tests across tests/agents/builtin_tools/test_workspace_tools.py and tests/shared/test_workspace.py covering the tool surface and the workspace store. Design captured in docs/specs/session-workspace-tools.md.
π Bug fixes
- Markdown artifacts rendered as raw source.
create_artifact'scontent_typedefaults totext/html, so a request like "make a markdown recipe" easily produced raw Markdown stored under the HTML type β which then rendered as run-together#/**source instead of a formatted document. The service now reclassifies HTML-typed content that lacks a full HTML document shell (<!doctype html>/<html>) as Markdown, which the writer wraps into a proper render document; the tool guidance also now steers prose deliverables (reports, articles, notes, recipes) to Markdown mode. Non-HTML and genuine HTML-document content pass through untouched (#720) - Empty "Thinking" blocks appeared on reload. Some models (e.g. Sonnet 5) persist a signature-only
reasoningContentblock β emptyreasoningText.text, no redacted content β which Bedrock requires kept in the message for follow-up calls. The live stream parser already guarded on this, but the history-rehydration path bypassed it and painted an empty "Thinking" collapsible on reload. AhasRenderableReasoning()guard now mirrors the component's own visibility logic and the parser's guard, so the block is only painted when it has reasoning text or redacted content. Display-only: the block is left untouched in the persisted message to preserve the signature/prompt-cache contract (#721)
π Deployment notes
- No CDK deploy needed β no new AWS resources, no infrastructure changes, no dependency changes (python-pptx runs in the sandboxed Code Interpreter, like openpyxl for Excel). Run
backend.yml(app-api / inference-api) andfrontend-deploy.ymlas usual. - Seed and grant the two new tool catalog entries per environment β "PowerPoint Presentations" (gate key
create_powerpoint_presentation) and "File Workspace" (gate keyworkspace_files) ship in the bootstrap seed data withenabledByDefault: false. Environments seeded before this release won't have the rows: add them via the admin Tools page (or re-run the tools seeding) and grant them to the appropriate roles via RBAC. - File Workspace kill switch β
WORKSPACE_TOOLS_ENABLEDdefaults ON; no configuration is required to enable the feature. Set it tofalseon the inference-api environment to disable the workspace tools entirely for an environment, independent of the catalog grant.