mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-29 19:35:20 +02:00
Single tool exposed to the main agent. The main agent passes a natural-language
`intent`; a focused drafter sub-LLM turns it into a full AutomationCreate JSON;
that JSON is surfaced via request_approval (action_type "automation_create") so
the user can edit/approve it on a frontend card; on approval the tool persists
via AutomationService. Three phases, one tool call.
Scope split:
- main agent sees only `intent: str` (no schema knowledge leaks into the calling
graph) — prompt fragments scoped accordingly.
- drafter sub-LLM owns the schema + few-shot intent→JSON examples — lives in
the generating graph's prompt (tools/automation/prompt.py).
Files:
- main_agent/tools/automation/{create.py, prompt.py, __init__.py}: new tool
+ drafter system prompt with two few-shot intent→JSON examples.
- system_prompt/prompts/tools/create_automation/{description.md, example.md}:
intent-only guidance for the main agent.
- main_agent/tools/index.py: add create_automation to the main-agent allowlist.
- new_chat/tools/registry.py: deferred-import factory to break the
multi_agent_chat ↔ registry cycle; one ToolDefinition entry.
|
||
|---|---|---|
| .. | ||
| confluence | ||
| discord | ||
| dropbox | ||
| gmail | ||
| google_calendar | ||
| google_drive | ||
| jira | ||
| linear | ||
| luma | ||
| notion | ||
| onedrive | ||
| teams | ||
| __init__.py | ||
| connected_accounts.py | ||
| generate_image.py | ||
| hitl.py | ||
| invalid_tool.py | ||
| knowledge_base.py | ||
| mcp_client.py | ||
| mcp_tool.py | ||
| mcp_tools_cache.py | ||
| podcast.py | ||
| registry.py | ||
| report.py | ||
| resume.py | ||
| scrape_webpage.py | ||
| search_surfsense_docs.py | ||
| tool_response.py | ||
| update_memory.py | ||
| video_presentation.py | ||
| web_search.py | ||