PDF stitching and app downloads
PDFs can be merged into a new artifact, decomposition writes navigable chunk IDs, and generated app exports now download correctly from sandboxed iframes.
PDF and app artifacts are easier to compose, inspect, and export.
Merge PDFs into one artifact
file_processor(operation="merge") can now stitch multiple PDF artifacts, including canvas PDF exports, into a single downloadable PDF artifact. The merge runs server-side and uses the normal artifact creation path, so the resulting file is uploaded, indexed, and available like any other artifact.
The merge path accepts API-produced PDFs with generic MIME types such as application/octet-stream, and corrects .pdf.bin filenames when an upstream system exports a PDF with an imprecise content type.
PDF chunks navigate by artifact ID
Bulk PDF decomposition now patches the root artifact's GCS content with the real chunk artifact IDs and folder paths as soon as section stubs are inserted. The agent sees the enriched navigation map immediately after upload instead of guessing section IDs from page paths.
That makes follow-up work on decomposed PDFs more reliable, especially when a large document becomes a navigable set of chunk artifacts.
Generated app exports download from the sandbox
Generated app iframes now include the right sandbox permissions and a parent-window download bridge. Apps can call window.downloadFile(...) inside the sandbox, and the host page triggers the download outside the iframe.
Reliability: nested function callers keep full tool payloads in Python where they belong, while direct agent calls still truncate oversized results for context safety. Function-triggered runs also load their work-order context before tool credential checks.