Skip to content

Add Deep Agents external storage sample - #390

Merged
brianstrauch merged 15 commits into
mainfrom
deepagents-external-storage-sample
Oct 21, 2026
Merged

brianstrauch merged 15 commits into
mainfrom
deepagents-external-storage-sample

Conversation

@brianstrauch

@brianstrauch brianstrauch commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Builds on the standalone-package migration in #384. Adds a Deep Agents sample whose activity-backed read_file tool returns 6 MiB of text. Native Temporal External Storage offloads the tool result and the following model input through the SDK's S3 driver, while the workflow returns a small byte count, SHA-256, and final answer.

The sample passes a DataConverter with External Storage to the standalone Deep Agents plugin, which composes its LangChain converter with that configuration. It uses the default 256 KiB threshold, so the workflow input, first model input, and final result stay inline. It reuses the existing local mock S3 service and scripts model replies, so it needs no AWS or LLM credentials. Includes setup documentation and a sample-index entry.

Validation:

  • The integration test passes with a local Temporal server and verifies the full 6 MiB result and SHA-256, native references at both large activity boundaries, inline small payloads, and replay through a fresh S3 client after worker shutdown.
  • The sample files pass Ruff import/format checks and mypy.

@brianstrauch
brianstrauch requested review from a team as code owners October 9, 2026 04:57
@brianstrauch
brianstrauch force-pushed the deepagents-external-storage-sample branch from 8b0ea82 to d9ef09f Compare October 9, 2026 05:07
@brianstrauch
brianstrauch requested a review from a team as a code owner October 9, 2026 05:07
@brianstrauch
brianstrauch changed the base branch from main to codex/migrate-ai-integration-packages October 9, 2026 05:07
Base automatically changed from codex/migrate-ai-integration-packages to main October 19, 2026 22:57

@DABH DABH left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One functional/design issue needs attention: the worker-wide scripted-response cursor makes concurrent executions interfere with one another; see the inline P2.

The storage configuration itself is well scoped: the S3 client lives through payload access, the plugin composes the converter, and the test checks both large activity boundaries, inline small payloads, full-content integrity, and replay through a fresh storage client.

Local validation:

  • The new integration test passed on Python 3.13.
  • Ruff import/format checks and scoped mypy passed.
  • A separate two-workflow probe on one worker reproduced stalled workflow tasks and execution timeouts with the current provider. Selecting scripted replies from each request's message history made both workflows complete with the expected 6 MiB size and SHA-256.

Comment thread deepagents_plugin/external_storage/client.py
@brianstrauch
brianstrauch requested a review from DABH October 21, 2026 03:34

@DABH DABH left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No actionable findings in the updated PR after reviewing correctness, design, functionality, test quality, and maintainability.

The earlier P2 is addressed by queue isolation. Each demo constructs its own client/plugin and now uses its unique workflow ID as the task queue for both the worker and workflow start. Model and tool activities inherit that queue, keeping each scripted-response cursor confined to its demo. This keeps the fix appropriately scoped to a self-contained External Storage example.

The new regression test runs two real main() invocations concurrently, checks both final answers and the size/SHA-256 assertions inside the driver, and verifies distinct workflow-specific queues. The existing test still checks both large activity boundaries, inline small payloads, complete content, forced replay, and replay through a fresh S3 client.

Validation at 1b09931 on Python 3.13:

  • Both targeted tests passed against a local Temporal server.
  • Both targeted tests passed against the time-skipping server.
  • Scoped Ruff import/format checks and mypy passed.

@brianstrauch
brianstrauch merged commit 6cbfecc into main Oct 21, 2026
14 checks passed
@brianstrauch
brianstrauch deleted the deepagents-external-storage-sample branch October 21, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants