feat/fix: Plugin promotions, tool fixes by linkliti · Pull Request #1908 · agent0ai/agent-zero · GitHub
Skip to content

feat/fix: Plugin promotions, tool fixes - #1908

Open
linkliti wants to merge 29 commits into
agent0ai:readyfrom
linkliti:feat/promote-plugins
Open

linkliti wants to merge 29 commits into
agent0ai:readyfrom
linkliti:feat/promote-plugins

Conversation

@linkliti

@linkliti linkliti commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Promote following tools to standalone plugins with minor fixes, preserving their original logic:

  • wait: now uses whole-second ticks and HLD UI handler (i have no idea what original HDL stands for and it is only used by wait tool)
  • notify_user: guard "timeout" param
  • search_engine: remove unused imports, guard results, move WEB handler to plugin
  • a2a_chat: fix parallel usage session erase (fix is limited to different A2A urls, not the same one)
  • scheduler: like _model_config, stays "always enabled" since schedule engine remains in core for other plugins. New plugin provides api, UI components and agent tools
  • behavior_adjustment: moved from _memory due to unrelated logic, renamed to american spelling as behavior_adjustment is 1 token cheaper according to OpenAI tokenizer, added empty ruleset rejection

Other changes:

  • Unify coerce_bool across tools
  • Promote specialized agent profiles to plugin, excluding default (utility profile), agent0 (actual default profile) and _example (example profile)
  • Promote A0 skills to plugin, update mentions to point to skills in plugin
  • Add new webui extension points for memory and scheduler plugins
  • Move memory plugin welcome card to plugin
  • Tests: fix test_browser_agent_regressions.py causing test regressions because stubs were shadowing real modules for later tests

Note: thumbnails were not generated for new plugins

@linkliti
linkliti force-pushed the feat/promote-plugins branch from 5838432 to acebc92 Compare September 24, 2026 11:00
@linkliti

linkliti commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor Author

Move the wait tool, its managed_wait helper, and prompt templates into plugins/_wait with 1:1 behavior; tool discovery and prompt collection already resolve plugin assets. Verified tool contracts test suite (38 passed).
Move the notify_user tool and its prompt templates into plugins/_notify_user with 1:1 behavior; notifications keep using the shared notification manager. Verified tool contracts test suite.
Move the search_engine tool, its prompt, and its tool message handler out of core messages.js into the plugin's webui extension; bundled Responses schema keys now point at plugin tool paths alongside the wait and notify_user moves. Verified tool contract, responses tools, and webui process types tests.
Move the a2a_chat tool and its prompt into plugins/_a2a_chat with 1:1 behavior; session caching stays on agent data and a2a contract tests import the plugin module. Verified tool contract and responses tools tests.
Move the scheduler agent tool and its prompt into plugins/_scheduler with 1:1 behavior; the shared TaskScheduler service, its API endpoints, and the Tasks UI stay in core for api, job_loop, and chat naming use. Verified tool contract, scheduler timezone, and timezone regression tests.
Move the behaviour tool, its system-prompt extension, and the behavior rules prompts out of _memory and core prompts into plugins/_behaviour_adjustment; rules persistence keeps the intentional cross-plugin memory subdir import. Verified tool contract and responses tools tests.
Relocate the six new child DOX rows into the existing alphabetical table order so the index stays consistent with its conventions.
Give the wait tool a dedicated wait log type, move the legacy progress presentation into the plugin with the corrected HLD badge, and drop the dead core progress handler and dispatch case.
Drop the unused search_engine imports, guard the notify_user timeout and wait and scheduler argument parsing against invalid values, harden search and a2a session handling, reject empty behaviour rulesets, accept range-step cron expressions, anchor the wait countdown to whole seconds, and remove the orphaned behaviour.search prompt.
Move the coerce_bool helper from parallel_tools to the shared tool module, import it directly in the parallel tool, scheduler, a2a chat, code execution, remote connector, and subordinate tools, and teach the tool stub used by contract tests about it.
Relocate the scheduler task CRUD API handlers, the Tasks modal and sidebar section, and the scheduler styles into plugins/_scheduler, add the sidebar-tasks-list extension point to the sidebar, read the tasks store from core consumers through a soft accessor so the plugin can be disabled, and keep the tick endpoint and the shared scheduling engine in core.
Relocate the developer, hacker, researcher, and tiny-local profiles into plugins/_agent_profiles with plugin-based profile discovery, keep agent0, default, and _example in the core agents directory, and mark the plugin always enabled so configured profiles keep resolving.
Relocate the bundled skills collection into plugins/_skills/skills with plugin-based discovery, keep a skills/AGENTS.md pointer at the historical path, keep the bundled skills directory as a global catalog root, and rely on the always-enabled _skills plugin so every bundled skill keeps resolving.
Import the real agent, tool, ws, ws_manager, and model_config modules before the setdefault stubs in the browser regression tests, teach the vision load tool stub about coerce_bool, and update the agent editor, prompt budget, and ws client tests to the plugin-based profile locations and task store accessor.
Cover the wait tool argument validation, whole-second countdown tick anchoring, intervention pause extension, and remaining-time formatting, and cover the search engine result formatting and execution paths, updating both plugin verification docs to name the new test files.
Restore the bundled skills directory as a global skill root after the skills plugin move, rename the _behaviour_adjustment plugin and its tool, prompts, and tests to the behavior_adjustment spelling with a legacy behaviour.md rules fallback, unwrap the wrapped markdown lines in the skills plugin DOX, drop the wait handler file docstring, and remove the extra blank line in the chats store imports.
Remove the explicit _scheduler references from core webui by dropping the hardcoded Tasks dropdown button, welcome action card, scheduler CSS preloads, and flatpickr loading, and let the scheduler plugin contribute them through the neutral sidebar-quick-actions-dropdown-start, welcome-actions-end, and page-head extension points.
Contribute the Tasks card through a new neutral welcome-actions-middle extension point between the Memory and Files cards instead of the lower-grid welcome-actions-end slot, register the point in the WebUI extension surface tests, and update the scheduler plugin DOX ownership.
Contribute the Memory card on the welcome screen through a welcome-actions-middle extension fragment in the _memory plugin that opens the memory dashboard modal directly, and drop the hardcoded card and its dispatcher case from core WebUI while keeping the card between the Projects and Files slots.
Drop the always_enabled declaration from the _agent_profiles plugin so it follows the standard activation rules like other bundled plugins, and reword its DOX contract to describe the standard enabled-state behavior.
Move plugins/_skills/skills 1:1 into a new always-enabled _bundled_skills plugin that owns the collection as a standard plugin skill root, keep catalog loading and visibility policy in the _skills feature plugin, and update plugin DOX, the root skills pointer, contribution docs, and test path expectations.
Update remaining bundled skill references to the _bundled_skills plugin root, align the agent profiles README with the standard enabled-state rules, remove the orphaned memory store import from the welcome store, point the tiny-local guide and its contract test at the plugin profile path, drop a doubled staticmethod decorator left in the remote code execution tool, soften the skills pointer DOX discovery claim, unify the tasks store soft-access idiom in the chats store, and add a scheduler regression test for the invalid update state response.
Drop the always_enabled declaration from the _bundled_skills plugin so it follows the standard activation rules like other bundled plugins, and reword its plugin, collection, pointer, and helper DOX contracts plus the plugins index row to describe the standard enabled-state behavior.
Replace the stale core HDL entry left after the wait badge rename with plugin-owned CSS: the wait plugin now serves the slate HLD accent and the search engine plugin serves the WEB accent through page-head style extensions instead of the core process-group stylesheet.
Put the flatpickr stylesheet preload and deferred script back into webui/index.html at their original spot, keep the scheduler plugin loading only its own scheduler and datepicker styles through the page-head extension, and update the scheduler DOX asset-loading ownership accordingly.
Point the chat naming and sidebar folders stores at the scheduler plugin tasks store, repoint the folder list and pin indicators at the shared scheduler task row, move the pin presentation, scheduler editor, and row actions tests to the relocated plugin paths, restore the tasks list view surface expectation, drop the index row of the right-click plugin removed on ready, and align the sidebar folders and sidebar DOX ownership wording with the promoted components.
Correct the reserved core profile list and point bundled specialist profiles at _agent_profiles in the a0-create-agent skill, restore the Child DOX Index in the _skills AGENTS.md, and unwrap the _skills README paragraphs.
Remove the neutral middle welcome actions point and contribute the Memory and Tasks cards through the welcome-actions-start slot instead, dropping the middle point from the surface tests and updating the scheduler plugin DOX.
Remove the title attributes from the Memory and Tasks items contributed to the sidebar-quick-actions-dropdown-start slot by the memory and scheduler plugins; the dropdown items already render visible text labels, so the redundant hover tooltips go away.
@linkliti
linkliti force-pushed the feat/promote-plugins branch from 590dc0c to a461d2e Compare October 11, 2026 15:03
@linkliti

Copy link
Copy Markdown
Contributor Author

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