Commit graph

51 commits

Author SHA1 Message Date
Alessandro
bea0c16d50 Overlap embedding warm-up with startup watchdogs
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Run initialization end hooks while embedding preload continues, then invoke
startup completion to perform the existing bounded wait and start MCP/jobs
before HTTP. Preserve initialization and preload extension skip controls,
best-effort failures, and the ten-second additional wait limit.

Five balanced cached-model boots per version reduced median HTTP readiness
from 17.063s to 15.907s (1.156s, 6.8%) and boot-to-first-token from 19.075s to
18.051s (1.024s, 5.4%). Useful overlap increased from 2.390s to 6.059s.
Post-Send latency increased by 0.146s in this sample; local preparation
increased by 0.025s. Models were warm before HTTP in all five candidate runs.

Validation: 24 focused framework tests passed, including actual ten-second
construction and encoding stalls, deterministic end-hook/warmup overlap,
and extension skip/error paths. The clean live restart returned HTTP 200
and completed preload before HTTP. Temporary probes and benchmark chats
were removed.
2026-10-12 17:57:20 +02:00
Alessandro
cc098d3e98 Speed up chat restoration and bound embedding warm-up
Some checks failed
Build And Publish Docker Images / plan (push) Has been cancelled
Build And Publish Docker Images / build (push) Has been cancelled
Reuse Git version metadata within each chat-load operation and pass saved
message token counts into reconstruction. Preserve per-agent settings and
credential reads, initialization hooks, profiles and legacy token behavior.

Give the existing deferred embedding preload up to 10 extra seconds after
chat restoration, within extensible init_a0. Continue startup on timeout or
task failure while allowing unfinished model loading to complete.

Across five trials per version with the same chat workload and a cached
embedding model, median HTTP readiness after the restart command returned
fell from 38.1 to 27.8 seconds: 10.3 seconds saved, or 27% less waiting.
Boot-to-first-token fell from 42.7 to 33.4 seconds. Post-send first-token
latency did not improve in this sample (4.709 to 5.108 seconds).

Validation: 146 focused framework tests passed, followed by 20 preload tests
including seven new edge cases. Real ten-second stalled-loading/inference
checks and offline missing/cached-model checks passed. Five DeferredTask
lifecycle tests passed separately; an existing test-order failure when
combined with preload imports also reproduces without the new cases.

Fresh-install performance was not measured; the full repository suite was
not run.
2026-10-11 19:27:39 +02:00
Alessandro
2afffe8edc Overlap embedding warm-up with chat restoration
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Load sentence-transformers on the existing cache miss and construct the
preloaded model off the shared background event loop. Start warm-up before
chat restoration inside extensible init_a0, preserving start-hook control
and sharing the loaded model with ordinary runtime requests.

Remove unused speech preload imports and dead warm-up functions. Seed APT
indexes only when absent, skipping the refresh on normal container boots.
Keep the existing Python tunnel service and its provider lifecycle.

Validation: 49 focused framework tests passed, including extension-hook
short-circuit behavior, concurrent embedding-cache reuse, APT cache states,
tunnel behavior and CSRF origins. Three cold Fable chat trials per version:
median submit-to-first-token 9.588s -> 4.234s;
local preparation 6.904s -> 1.197s;
HTTP readiness 42.637s -> 41.139s;
boot-to-first-token 52.093s -> 46.657s.
Provider timing varies; these are local repeated measurements. The live
baseline already omitted APT refresh, so it receives no timing credit.
2026-10-10 16:36:08 +02:00
Alessandro
429946fba4 Fix Responses prompt caching in long conversations
Retain each completed local Responses turn's masked extras in result
metadata and replay them at their original boundary. This keeps growing
tool and user turns from discarding cacheable prompt prefixes.

Preserve replay eligibility, secret masking and history summaries, and
include retained extras in Responses compression accounting. Chat
Completions and fallback requests retain their existing behavior.

Validation: 238 targeted tests passed in the framework runtime. A live
GPT-6.1 Sol conversation reached 131,099 input tokens with 130,176 cached
(99.3%) on a user follow-up.
2026-10-07 18:18:51 +02:00
Alessandro
5a4b4130b2 Use native LiteLLM routes for core providers
Route Nebius, Venice chat, Z.AI/Coding and OpenRouter embeddings through
LiteLLM's native integrations. Retain the Token Factory and Coding endpoint
overrides, OpenRouter attribution, and Venice/proxy embedding fallbacks.
Keep Cerebras and Z.AI model-list URLs in listing metadata while allowing
LiteLLM to supply inference defaults and Copilot request headers.

Merge YAML-declared extra_body defaults, legacy top-level values and explicit
nested overrides in the shared provider-default loader. This preserves saved
Venice settings without provider-specific branches in the model-config plugin.

Validation: 114 focused SDK, API-key, onboarding, model-search and preset tests
passed in the port-32081 framework runtime with LiteLLM 1.104.0. Native routes
were checked over loopback HTTP without paid provider calls; the restarted
service returned HTTP 200 and loaded the updated provider definitions.
2026-10-07 15:30:09 +02:00
Alessandro
b91384f4fb Upgrade LiteLLM and OpenAI with framework startup migration
Update LiteLLM to 1.104.0, OpenAI to 2.54.0, and python-dotenv to 1.2.2.
Raise shared security floors for aiohttp, anyio, urllib3, filelock, fsspec,
and multidict while retaining the compatible OpenAI 2.x SDK line.

Use the existing startup_migration hook to apply the same requirements to
v2.x Docker instances updating to v2.14. Read versions from requirements.txt,
install only when requirements are unmet, and reuse restart_process() to
load the upgraded SDKs before serving requests. Skip current and non-Docker
environments, bound installation time, and propagate installation failures.

Add installed-SDK HTTP tests for Chat Completions, Responses, streaming,
tools, state, usage, fallback, embeddings, and Anthropic cache markers.
Cover dependency migration, restart behavior, and installation failures.

Validation:
- 70 focused dependency, SDK, and self-update tests passed.
- Docker startup upgraded the v2.0-v2.13 SDK pins and became healthy in
  24 seconds, with exactly one dependency installation and process restart.
- An already-current startup performed no installation or extra restart.
- pip check passed; live Codex Responses and Moonshot Chat Completions
  tasks and follow-ups validated the upgraded SDK versions.
2026-10-07 14:50:32 +02:00
Alessandro
27b7df8917 Restore full-response repeat checks for native tool calls
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Compare public commentary together with canonical function calls when
recording and checking the previous response. This restores the historical
full-message policy for native turns, so changed or missing commentary
can distinguish otherwise identical calls.

Keep canonical call history, masking, provider metadata and state
advancement intact. Exclude provider IDs and separate reasoning from the
comparison; identical public text and calls remain guarded.

Cover commentary changes and absence, call changes and batches, provider
metadata round trips, and legacy thoughts/headline behavior. Update the
owning contracts. Verified with 177 passing tests, four recorded Mac
warning replays and a live two-call drill using the Codex II preset.
2026-10-06 18:49:30 +02:00
Alessandro
c550092b6d Fix chat activity timestamps at the history write boundary
History writes updated Agent.last_message, while sidebar snapshots and saved
chats read AgentContext.last_message. Continuing a chat could therefore leave
its activity timestamp unchanged.

Update the context timestamp in the shared history writer. Preserve explicitly
supplied timestamps across initialization hooks so greeting history does not
make restored chats appear newly active.

Add regression coverage for user, AI, tool, and warning messages in parent and
child contexts, including serialization and continued activity after reload.
Document ownership of the activity timestamp.

Validation: 15 focused tests passed, plus the new regression in the container's
framework runtime. Two live UI messages advanced Thread+ activity timestamps
while preserving creation time; saved JSON and the reloaded UI matched.
2026-09-30 15:41:18 +02:00
Alessandro
827f9176d2 Skip rate-limiter token counting without limits
apply_rate_limiter tokenized the full serialized prompt on every call
even when no request, input or output limit was configured. Return
early in that case; callers already skip output accounting when no
limiter is returned.

Add a regression for missing config, disabled limits, and each enabled
limit; document the accounting contract.

Validation: 115 rate-limiter, streaming, Responses and embedding tests
passed with this change alone on the original base in the Docker
framework runtime. The disabled-limits regression fails on the old
code. Earlier live Codex measurements with a 760 KB prompt showed
about 70 ms dropping to 0 ms in apply_rate_limiter.
2026-09-23 18:11:13 +02:00
Alessandro
ade204c7e3 Build native tools only for Responses turns
call_chat_model_turn built Responses function tools on every call,
although the Chat Completions transport drops them. Gate the build on
the chat model's a0_api_mode, as responses_history.prepare_call
already does, and pass an empty tool list and name map otherwise.

Add a parametrized regression for Chat and Responses turns and
document the contract.

Validation: 157 focused tests, including the new regression, passed
with this change alone on the original base in the Docker framework
runtime. Earlier live Kimi K3 and Cerebras measurements showed
400-450 ms spent building unused tools before the request.
2026-09-23 18:10:59 +02:00
Alessandro
255ff63bff Preserve configured API-key pools when saving settings
Separate reading the configured key value from selecting a runtime key.
Settings and key reveal retain the complete comma-separated list; model
calls keep the existing rotation and provider hooks. Runtime-only OAuth
placeholders are not treated as configured keys.

Keep the existing 6.5x Git-version-cache save optimization unchanged.

Verified 24 focused settings/profile tests, 30 model-key tests, and the
Docker framework getter/cache/OAuth suite, including alias preservation
and the configured-key versus runtime-hook boundary.
2026-09-19 02:31:45 +02:00
Alessandro
335811833a Fix SOCKS proxy support for HTTPX clients
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Include HTTPX's SOCKS extra in framework requirements so SOCKS proxy
settings work when LiteLLM starts. Let the Browser install hook repair
missing SOCKS support in existing framework environments, skipping the
installation when socksio is already available.

Cover missing dependencies, existing installations, and repeated hook
calls, and document the framework and plugin ownership.

Validation:
- 139 Browser and Docker release-planning tests passed.
- Local amd64 and ARM64 (QEMU) production image builds passed; ARM64
  needed an unchanged retry after a transient Kali mirror/DNS failure.
- Browser hook and sync/async SOCKS5 and SOCKS5h requests passed in both
  fresh images, including client initialization with mixed proxy settings.
2026-09-16 03:11:47 +02:00
Alessandro
55aee9d857 Display native commentary as streamed thoughts
Show public commentary alongside native tool calls in generation logs while preserving separate reasoning summaries. Request commentary without a sentence limit and retain canonical calls when Chat Completions also returns text.

Use display-only previews for agent turns and reconcile completed output without changing legacy callbacks, native dispatch or provider metadata.

Validated with parser, streaming and prompt regression tests, plus live Codex II ordinary and parallel tool chats.
2026-09-15 15:06:04 +02:00
Alessandro
8f184abede Consolidate Responses prompt bookkeeping outside Agent
Keep per-build replay state and model-call adaptation in the existing
Responses helpers instead of adding transport fields to LoopData or a
history-conversion method to Agent. Prompt section owners identify sections;
Responses owns alternate templates, while MCP supplies filtered server context.
Remove the persisted replay counter used only for diagnostics.

Retain public history compatibility, canonical masking and shared stream
normalization at their existing boundaries. Across the remediation series,
agent.py additions decrease from 61 to 24 lines without introducing new hooks.

Validation: 1633 root tests passed, one skipped; framework prepared-input
probe passed. Live Codex and Venice presets completed terminal checks, with
56% cache hit shown in the Codex Context window viewer.
2026-09-06 23:08:10 +02:00
Alessandro
32aa95e8dd Preserve native Responses history within prepared prompts
Project intact call/result groups from the current prepared local Responses
input, retaining original IDs and encrypted reasoning. Bind replay to the
visible prefix and tool scope; preserve summaries, masking, protocol, extras
and untouched Chat/fallback input. Keep request conversion in Responses helpers.

Recover output items omitted by terminal stream envelopes and keep native
call commentary out of plain-response finalization. Do not rewrite stored
chats or change tool execution policy.

Validation: 1632 root tests passed, one skipped; framework prepared-prompt
probe passed. Live Codex and Venice presets completed terminal calls, native
replay advanced from three to four calls, and the viewer reported 57% cache hit.
2026-09-06 22:08:21 +02:00
Alessandro
5602d5c4be Preserve native calls in assistant history and repeat checks
Store canonical function-call content through the existing assistant history and masking path, preserving original provider metadata. Compare that same content when detecting repeated responses so accompanying commentary cannot hide distinct calls.

Validated with 87 focused architecture, result, logging and Context Doctor tests plus a framework runtime history/repeat probe. Native history replay remains a separate change.
2026-09-06 20:10:46 +02:00
Alessandro
9d9d6e1a89 Project native system instructions only for Responses requests
Record protocol substitutions at the existing system-section owners and apply
them to copied Responses input when native A0 tools are present. Keep original
Chat and fallback messages intact, remove duplicate local tool guidance, and
preserve policy-filtered MCP server context.

Provide a profile-overridable native communication template and keep the JSON
brace terminator in the legacy protocol. Stored history remains unchanged.

Verified 127 focused tests, Docker framework rendering, and same-chat Codex to
Venice to Codex terminal tasks. Codex input fell from about 16.4K to 11.3K after
removing duplicate guidance. Native history/reasoning replay remains separate.
2026-09-06 19:40:29 +02:00
Alessandro
1b6fecdcb8 Restore legacy assistant history call compatibility
Accept message-only calls and legacy positional message IDs by supplying the
non-LLM sentinel. Preserve current positional and keyword LLMResult calls,
and reject duplicate IDs before changing history.

Keep Responses state advancement inside hist_add_ai_response. Verified six
call forms with 33 architecture/message-loop tests and an isolated Agent
check in the Docker framework runtime.
2026-09-06 18:49:28 +02:00
Alessandro
71b9759d51 Prevent chat parameters from leaking into embeddings
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Strip the internal a0_api_mode flag at the shared embedding request boundary for every provider. Repair Venice preset migration so chat-only parameters are removed from embedding slots while valid embedding kwargs are preserved.
2026-09-06 06:31:21 +02:00
linkliti
4634070e95 Own Responses-API state advancement in hist_add_ai_response
Make llm_result required in hist_add_ai_response and move _remember_llm_result_state inside so plugin authors cannot silently break response_id chaining. Drop manual state calls in main loop and _30_repeat_response. Pass empty LLMResult() for greeting and intervention progress. Document invariant in root AGENTS.md and affected extension DOX.
2026-09-04 16:12:38 +03:00
Alessandro
4d10f601d7 refactor: unify embedding calls behind batch entry point
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Expose embed(inputs) on both embedding wrappers and route the existing LangChain query and document methods through it. This removes duplicate transport logic while allowing provider-ready text and media payloads to use the same extension-friendly path.

Add focused regression coverage and document the wrapper contract.
2026-08-31 18:12:23 +02:00
Alessandro
5a96eda078 Reuse preloaded local embedding models
Cache the underlying SentenceTransformer by its effective constructor options so startup preload and first-chat initialization share one instance while wrappers keep their own runtime configuration. Pass the runtime embedding configuration through preload and cover reuse, concurrency, option changes, and failure handling.
2026-08-26 23:04:32 +02:00
Alessandro
9f1e24a2db fix(prompts): strip JSON fences at render time
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Keep fenced examples readable in prompt Markdown while removing only JSON fence markers from the final assembled system prompt. Cover all bundled profiles and preserve non-JSON fences.
2026-07-25 16:01:52 +02:00
Alessandro
c6136da08b fix(response): keep completions on the tool path
Route native Responses output text through the normalized response-tool executor instead of ending the monologue directly. Preserve active goal overrides and Responses state cleanup, wait for complete native streams, and reject empty response payloads.
2026-07-25 00:44:56 +02:00
Alessandro
8e5d643483 Remove legacy filesystem logs
Stop PrintStyle from creating per-process HTML files under /a0/logs and remove the obsolete tracked folder scaffolding.

Delete existing legacy log directories during startup migration so self-updated and manually upgraded installations are cleaned automatically. Point plugin debugging guidance to Docker output and add regression coverage for repeatable cleanup.
2026-07-16 15:30:37 +02:00
Alessandro
2e32a2f8dc Accept host-browser discovery endpoints
Preserve explicit endpoint case, accept host:port and HTTP discovery addresses in Browser settings, and keep live-runtime guidance independent of any fixed localhost port.
2026-07-14 16:10:13 +02:00
Alessandro
82ae8d50e0 Subdivide root DOX guidance
Trim the root AGENTS.md to project-wide contracts and the top-level child index. Move Docker runtime and GitHub release details into their owning child DOX files.
2026-07-10 18:38:07 +02:00
Alessandro
db7b90823e Move preset editor behavior into Alpine store
Create local preset drafts and handle add, remove, and save actions through modelConfig.createPresetEditor so the HTML remains declarative.

Document the project-wide Alpine expression boundary and keep the plugin contract specific to preset editor ownership.
2026-07-10 14:19:23 +02:00
Alessandro
bcdc99e6cc Clarify optional memory plugin docs
Remove memory-plugin assumptions from root and non-plugin DOX contracts so disabled plugins are not implied as available runtime behavior.

Keep the memory plugin documented only in its owning plugin subtree and mark it optional from the parent plugin index.
2026-07-02 17:29:40 +02:00
Alessandro
4b49386f96 Refactor a0-development into grounded references
Split the monolithic a0-development skill into a lean entry point plus focused reference files for runtime, DOX, tools, extensions, API/WebUI, profiles, prompts, skills, projects, and plugin workflow.

Update the skill DOX ownership for the new references directory and clarify the root framework-vs-agent Python runtimes plus port-discovery guidance.

Verified with git diff --check, targeted skill/tool tests under PYTHONPATH, and live localhost:32769 skill loading/read_file checks before committing.
2026-06-23 17:51:43 +02:00
frdel
afdc3aeb44 Add protocol prompt area before history
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Introduce a new prompt "protocol" separate from extras: add LoopData.protocol_temporary and protocol_persistent, include protocol contents before message history during prompt construction, and clear temporary protocol data each turn. Add helper _build_context_message to render protocol/extras, update response input conversion to include protocol, and move project instructions & active/loaded skills injection into protocol. Update docs, prompts, plugin metadata, the SkillsTool message, and add tests to verify protocol placement and behavior.
2026-06-18 21:42:06 +02:00
Alessandro
3d4c302185 Solidify LiteLLM global kwargs handling
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
Limit LiteLLM module mutation to documented global switches such as drop_params, while preserving configured LiteLLM kwargs as per-call options. Avoid freezing global kwargs into provider defaults so runtime settings remain current, and extend focused tests for drop_params, additional_drop_params, and provider default behavior.
2026-06-12 03:27:49 +02:00
Alessandro
b3b5e44cc3 Patch LiteLLM security pins
Upgrade LiteLLM to 1.88.1 so Agent Zero is above the CVE-2026-42271 patched floor, and move the OpenAI SDK pin to 2.41.1 to satisfy LiteLLM's new dependency range.

Pin Starlette to the patched 1.0.1 release for the Host-header request.url.path advisory.

Fold requirements2.txt back into requirements.txt now that browser-use is no longer part of the repo dependency set, and update installer and setup docs to use a single requirements file.
2026-06-11 03:47:58 +02:00
frdel
77f7aa0274 Time Travel workspace selector + LiteLLM globals
Add selectable workspace support to the Time Travel plugin and introduce normalized global LiteLLM configuration handling.

models.py: add DEFAULT_LITELLM_GLOBAL_KWARGS and helpers to normalize, load, apply, and merge LiteLLM global kwargs; call configure_litellm/set per-call merges in LiteLLM wrappers so framework defaults, configured globals, and per-call overrides combine correctly. Add tests to assert merging and runtime application.

plugins/_time_travel: update docs and plugin metadata to describe workdir/project selection. API handlers now accept workspace_id and a new history_workspaces endpoint lists selectable workspaces. helpers/time_travel: implement workspace listing, selection, and resolution logic (workdir/project options, availability/locking, default selection). UI: add workspace picker to time-travel panel, wire selection/load into time-travel store, pass workspace_id to API calls, and add click hook to open the panel. Update styles and refresh/load behavior accordingly.

Tests: extend tests for LiteLLM global kwargs merging and adapt stream test to expect merged params; add tests for selectable workspaces, default selection, and locked external workdir handling.
2026-06-09 17:16:41 +02:00
frdel
175baa49db Add AGENTS.md DOX files and migrate docs
Introduce DOX (AGENTS.md) contracts across the repository to formalize ownership and local work contracts: adds .github/AGENTS.md plus AGENTS.md files for agents, api, conf, docker, docs, extensions, helpers, knowledge, lib, plugins, prompts, scripts, skills, tests, tools, usr, webui (and several subfolders). Update root AGENTS.md (content and last-updated date) to include DOX framework guidance and a child DOX index. Update .gitignore to allow usr/ and usr/plugins AGENTS.md files. Remove legacy deep-dive files under docs/agents (banners, components, modals, plugins) and migrate frontend/plugin references to webui/ and plugins/ DOX locations. Also adjust plugins/README.md and several skills/*/SKILL.md files to align with the new DOX layout.
2026-06-01 13:55:07 +02:00
Alessandro
5dd40db386 add banners agentic docs 2026-03-31 21:23:58 +02:00
Jan Tomášek
9390ba9624
Merge pull request #1344 from keyboardstaff/ws-rework
refactor: Comprehensive WebSocket System Rework
2026-03-30 16:45:49 +02:00
frdel
84798abf90 Replace static release notes files with dynamic OpenRouter-based generation in Docker publish workflow
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
- Remove RELEASE_NOTES_DIR env var and docs/release_notes/ directory with v1.0 and v1.1 markdown files
- Add OPENROUTER_API_KEY and OPENROUTER_MODEL to workflow environment variables
- Add OPENROUTER_CHAT_COMPLETIONS_URL constant and OPENROUTER_SYSTEM_PROMPT_PATH pointing to scripts/openrouter_release_notes_system_prompt.md
- Add require_env, load_text, github_repository_parts, github_api_get helpers
2026-03-26 20:02:00 +01:00
keyboardstaff
dae37ee0f6 Rebuild test suite & update documentation 2026-03-26 01:12:22 -07:00
Nicolas Leão
ccf7c7d971 update incorrect info on AGENTS.md 2026-03-25 13:51:29 -03:00
frdel
1d6d549765 Update documentation with release notes workflow and Docker publish automation details
- Add release notes section to AGENTS.md with workflow overview and writing guidelines
- Document Docker publish automation in Git Workflow section
- Add release_notes/ directory reference to key files list
- Update README.md with release notes documentation link and changelog note
- Add release notes entry to docs/README.md navigation
- Document automated Docker Hub publishing in dev-setup.md
- Update AGENTS
2026-03-25 15:19:08 +01:00
Alessandro
5ed58fb10f simplify plugin config modal opening
Move plugin config modal initialization into pluginSettingsStore.openConfig(), so callers only pass plugin name and optional scope. Resolve invalid project/agent scopes inside the store, initialize toggle state on the resolved scope, remove the old saveMode/core-save path, and delete stale saveMode guidance from docs and plugin skills.
2026-03-19 13:53:08 +01:00
Alessandro
48632c2a95 plugin standards in docs; enhance A0 knowledge/main
docs: update installation guide thumbnail and URL

- Updated the video URL and thumbnail to be the new script-based installation guide from YT in README.md and internal docs.

---

- Standardize Python imports for user plugins to `usr.plugins.<plugin_name>...`,
  replacing sys.path hacks and symlink-dependent patterns
- Add cleanup policy: plugins must not leave permanent system modifications
  (symlinks, orphaned services, stray files) after deletion
- Remove superseded plugin-import-standards-report.md (recommendations are now
  integrated into the actual docs)
- Updated surfaces: AGENTS.md, AGENTS.plugins.md, developer/plugins.md,
  a0-create-plugin skill

---

update AGENTS.md and enhance agent-facing knowledge of A0

Enhanced the knowledge of the framework by removing the 1:1 copy of our GitHub README.md at the root and replacing it with a docs set for agents, to know more about Agent Zero without all the noise from URLs, explanations meant only for users.

Updated AGENTS.md accordingly.
2026-03-16 04:05:24 +01:00
frdel
a48ac95a29 feat(plugins): Add extensibility and hooks system to plugin API
Add @extension.extensible decorators to all plugin API handler methods and core plugin functions to enable extension points. Implement plugin hooks system allowing plugins to define custom behavior via hooks.py file. Add call_plugin_hook function to execute plugin-specific hooks for events like uninstall, save_plugin_config, and get_plugin_config. Introduce uninstall_plugin function that calls uninstall hook before deletion. Move circular
2026-03-12 13:21:33 +01:00
frdel
a807e2458b Use prototype-based context for plugin settings
Refactor plugin settings to use a per-modal prototype/context instead of binding directly to the global store. Introduces pluginSettingsPrototype (renamed export) and a lightweight instantiate helper (Alpine.magic('instantiate')) to clone the prototype into a modal-local context. Plugin config HTMLs (code_execution, infection_check, memory, text_editor) now bind UI fields to config.* and use context.* for modal-level state and actions; plugin settings components (plugin-settings.html, plugin-configs.html, plugin-settings-store.js, pluginListStore.js) were updated to create and consume the local context and to pass context into nested modals. Documentation and the SKILL guide were updated to describe the new modal contract and usage. This change scopes settings UI state to modal instances, enabling safer local state and easier integration with core-setting wrappers (use context.saveMode = 'core').
2026-03-09 21:19:55 +01:00
frdel
d02dda3667 BIG PYTHON REFACTOR
Python scripts moved out of python/ folder to root to be unified with plugins

+ frontend extension around api calls
2026-03-05 17:28:11 +01:00
Alessandro
c51f313d94 docs: update plugin docs and skill
update plugin skill and docs
2026-03-03 19:07:16 +01:00
Alessandro
8639069104 update docs, skill and enhance activation model
- Updated documentation to reflect the new plugin structure and activation rules.
- Refactored activation rules related code in the API and frontend to accommodate the new plugin settings and activation logic.
- Added support for clearing per-scope overrides when toggling plugins.
2026-02-24 15:23:14 +01:00
Alessandro
6f6348850d update agents, human docs, plugin skill 2026-02-22 19:37:42 +01:00
Alessandro
604078376f align plugin schema, config API actions, and plugin list UI 2026-02-20 08:32:17 +01:00