Skip to content

feat: enhance task management and timeout configurations in multi-age…#1442

Merged
MODSetter merged 1 commit into
devfrom
feat/hermes-task-boundary-improvements
May 27, 2026
Merged

feat: enhance task management and timeout configurations in multi-age…#1442
MODSetter merged 1 commit into
devfrom
feat/hermes-task-boundary-improvements

Conversation

@MODSetter
Copy link
Copy Markdown
Owner

@MODSetter MODSetter commented May 27, 2026

…nt chat

  • Added new environment variables for controlling task execution limits, including SURFSENSE_SUBAGENT_INVOKE_TIMEOUT_SECONDS, SURFSENSE_TASK_BATCH_CONCURRENCY, and SURFSENSE_TASK_BATCH_MAX_SIZE.
  • Updated documentation to reflect new batch processing capabilities for task calls, allowing for concurrent execution of multiple subagent tasks.
  • Improved error handling and receipt generation for deliverables, ensuring consistent feedback on task status.
  • Refactored middleware to incorporate search space ID for better task management.

Description

Motivation and Context

FIX #

Screenshots

API Changes

  • This PR includes API changes

Change Type

  • Bug fix
  • New feature
  • Performance improvement
  • Refactoring
  • Documentation
  • Dependency/Build system
  • Breaking change
  • Other (specify):

Testing Performed

  • Tested locally
  • Manual/QA verification

Checklist

  • Follows project coding standards and conventions
  • Documentation updated as needed
  • Dependencies updated as needed
  • No lint/build errors or new warnings
  • All relevant tests are passing

High-level PR Summary

This PR introduces comprehensive task management controls and verification mechanisms for multi-agent chat. The core changes include: adding environment-variable-controlled timeout and concurrency limits for subagent task execution (SURFSENSE_SUBAGENT_INVOKE_TIMEOUT_SECONDS, SURFSENSE_TASK_BATCH_CONCURRENCY, SURFSENSE_TASK_BATCH_MAX_SIZE); implementing a structured Receipt system that allows the orchestrator to verify mutating operations (deliverables generation, connector actions, KB writes) without relying on LLM paraphrasing; introducing batch-mode task execution (task(tasks=[...])) for concurrent fanout of 3+ independent specialist calls; adding a per-workspace Redis-backed spawn-pause kill switch for operational control; refactoring Celery-backed deliverable tools (podcasts, video presentations) to poll until terminal status rather than returning immediately; and updating all subagent system prompts with shared verification teachings and output contract snippets via an <include snippet="..."/> directive system.

⏱️ Estimated Review Time: 1-3 hours

💡 Review Order Suggestion
Order File Path
1 surfsense_backend/.env.example
2 surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/checkpointed_subagent_middleware/constants.py
3 surfsense_backend/app/agents/shared/__init__.py
4 surfsense_backend/app/agents/shared/receipt.py
5 surfsense_backend/app/agents/shared/receipt_command.py
6 surfsense_backend/app/agents/shared/deliverable_wait.py
7 surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/checkpointed_subagent_middleware/spawn_paused.py
8 surfsense_backend/app/agents/new_chat/filesystem_state.py
9 surfsense_backend/app/agents/new_chat/state_reducers.py
10 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/spec.py
11 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/md_file_reader.py
12 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/snippets/__init__.py
13 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/snippets/output_contract_base.md
14 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/snippets/verifiable_handle.md
15 surfsense_backend/app/agents/multi_agent_chat/subagents/shared/subagent_builder.py
16 surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/checkpointed_subagent_middleware/task_tool.py
17 surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/checkpointed_subagent_middleware/middleware.py
18 surfsense_backend/app/agents/multi_agent_chat/middleware/stack.py
19 surfsense_backend/app/agents/multi_agent_chat/main_agent/system_prompt/prompts/routing.md
20 surfsense_backend/app/agents/multi_agent_chat/main_agent/system_prompt/prompts/tools/task/description.md
21 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/system_prompt.md
22 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/report.py
23 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/resume.py
24 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/podcast.py
25 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/video_presentation.py
26 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/generate_image.py
27 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/tools/send_email.py
28 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/tools/delete_page.py
29 surfsense_backend/app/agents/new_chat/middleware/kb_persistence.py
30 surfsense_backend/app/agents/new_chat/tools/podcast.py
31 surfsense_backend/app/agents/new_chat/tools/video_presentation.py
32 surfsense_backend/app/tasks/chat/streaming/handlers/tool_end.py
33 surfsense_backend/app/tasks/chat/streaming/handlers/tools/deliverables/generate_video_presentation/emission.py
34 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/system_prompt_cloud.md
35 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/system_prompt_desktop.md
36 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/memory/system_prompt.md
37 surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/research/system_prompt.md
38 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/airtable/system_prompt.md
39 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/calendar/system_prompt.md
40 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/clickup/system_prompt.md
41 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/confluence/system_prompt.md
42 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/discord/system_prompt.md
43 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/dropbox/system_prompt.md
44 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/system_prompt.md
45 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/google_drive/system_prompt.md
46 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/jira/system_prompt.md
47 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/linear/system_prompt.md
48 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/luma/system_prompt.md
49 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/system_prompt.md
50 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/onedrive/system_prompt.md
51 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/slack/system_prompt.md
52 surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/teams/system_prompt.md
53 surfsense_backend/app/agents/multi_agent_chat/middleware/shared/kb_context_projection.py
54 surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/ask/request.py
55 surfsense_backend/app/agents/new_chat/middleware/compaction.py
56 surfsense_backend/app/agents/new_chat/middleware/doom_loop.py
57 surfsense_backend/app/agents/new_chat/middleware/permission.py
58 surfsense_backend/app/services/composio_service.py
59 surfsense_backend/app/etl_pipeline/etl_pipeline_service.py
60 surfsense_backend/app/services/gmail/kb_sync_service.py
61 surfsense_backend/app/services/google_calendar/kb_sync_service.py
62 surfsense_backend/app/services/jira/kb_sync_service.py
63 surfsense_backend/app/services/llm_service.py
64 surfsense_backend/app/services/onedrive/kb_sync_service.py
65 surfsense_backend/app/tasks/chat/stream_new_chat.py
66 surfsense_backend/app/utils/document_converters.py

Need help? Join our Discord

…nt chat

- Added new environment variables for controlling task execution limits, including `SURFSENSE_SUBAGENT_INVOKE_TIMEOUT_SECONDS`, `SURFSENSE_TASK_BATCH_CONCURRENCY`, and `SURFSENSE_TASK_BATCH_MAX_SIZE`.
- Updated documentation to reflect new batch processing capabilities for `task` calls, allowing for concurrent execution of multiple subagent tasks.
- Improved error handling and receipt generation for deliverables, ensuring consistent feedback on task status.
- Refactored middleware to incorporate search space ID for better task management.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
surf-sense-frontend Building Building Preview, Comment May 27, 2026 9:58pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 27, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1539fc90-b424-46a4-b342-bce7a58795ae

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/hermes-task-boundary-improvements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@MODSetter MODSetter merged commit b645c3f into dev May 27, 2026
7 of 11 checks passed
@MODSetter MODSetter deleted the feat/hermes-task-boundary-improvements branch May 28, 2026 00:30
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.

1 participant