Commit graph

1947 commits

Author SHA1 Message Date
Alessandro
8240edb400 update plugin Skills guidance for uninstall()
Agents were inferring naturally how to cleanup dependencies coming from community plugins by putting an uninstall() function sometimes.

That wasn't always the case and now the flow is more bounded to the install(), uninstall() and preupdate() requirements when dependencies are involved.
2026-04-12 18:26:38 +02:00
Alessandro
5479cded95 Merge branch 'main' into ready 2026-04-12 17:27:51 +02:00
Alessandro
821b0294ef
Merge pull request #1503 from silverqx/silverqx-patch-1
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
Fix typos in memory.solutions_sum.sys.md
2026-04-12 17:24:38 +02:00
Alessandro
2b1ff5e798
Merge pull request #1501 from 3clyp50/fileabsCVE
fix(api): block path traversal in download_work_dir_file (CVE-2026-4307)
2026-04-12 17:24:10 +02:00
Alessandro
67a190f503
Merge pull request #1500 from 3clyp50/docqueryCVE
Fix SSRF in document_query remote fetching (CVE-2026-4308)
2026-04-12 17:23:57 +02:00
Alessandro
6b97e7c470
Merge pull request #1499 from 3clyp50/browser
browser-agent: selectable _model_config preset for browser runs
2026-04-12 17:23:37 +02:00
Silver Zachara
f5e21b9871
Fix typos in memory.solutions_sum.sys.md 2026-04-12 16:34:16 +02:00
Alessandro
d30a565549 browser-agent: selectable _model_config preset for browser runs
This PR keeps the Browser Agent runtime behavior as-is and only adds in the model-preset option for browser runs (highly requested by our users).

The Browser Agent can now use either:
- the effective Main Model from `_model_config`, or
- one saved `_model_config` preset dedicated to browser tasks

- this PR brings back LLM customization for Browser Agent plugin, but without over engineering. Model presets-only, not custom provider + LLM, like we have in Email Integration.
- created a separate `browser-agent-store.js` page store to remove JS from within x-data in the HTML markup of main.html
2026-04-12 03:38:41 +02:00
Alessandro
0e3e8a159a fix(api): block path traversal in download_work_dir_file (CVE-2026-4307)
Reject download requests whose resolved path escapes the runtime base
directory before file metadata lookup or streaming.

This keeps valid in-base absolute paths working in both Docker and
development setups while preventing arbitrary file reads via
/download_work_dir_file (CVE-2026-4307).

Reported by Edward-x (@YLChen-007). Thanks again.
Refs:
- https://nvd.nist.gov/vuln/detail/CVE-2026-4307
- https://gist.github.com/YLChen-007/1819c843ad26aaaaecdc768a789df022
- https://vuldb.com/vuln/351337/cti
2026-04-12 02:31:24 +02:00
Alessandro
91f43e28b4 fix: preserve safe remote fetch compatibility for public sites
Restore remote document fetch compatibility for public sites after the
CVE-2026-4308 SSRF hardening.

The initial security fix correctly blocked non-public destinations, but
it also changed the outbound request fingerprint for `document_query`
remote fetches. Some public sites, including https://nvd.nist.gov/vuln/detail/CVE-2026-4308, used for testing, responded with HTTP
403 to the default `requests` user agent even though they remained safe
and publicly routable.

This change keeps the centralized SSRF protections in place while
restoring the previous request compatibility behavior by sending the
configured `USER_AGENT` header, falling back to the prior
`@mixedbread-ai/unstructured` value.

What is fixed:
- public URLs such as
  `https://nvd.nist.gov/vuln/detail/CVE-2026-4308`
  no longer fail with site-specific HTTP 403 due to request fingerprint
  changes introduced by the SSRF mitigation
2026-04-12 02:08:13 +02:00
Alessandro
6397acc092 Fix SSRF in document_query remote fetching (CVE-2026-4308)
Address CVE-2026-4308 in the document_query tool remote-fetch path.

The issue was originally reported by @YLChen-007.

This change replaces ad hoc remote document fetching with a centralized
safe fetch flow that validates remote URLs before any network request is
used for parsing. It blocks localhost and non-public IPv4/IPv6 targets,
validates every redirect hop, disables implicit trust of proxy env
settings for this path, and enforces a strict remote document size cap.

It also removes direct third-party loader access to attacker-controlled
URLs by prefetching remote content first and then parsing only trusted
local bytes or temp files for HTML, text, PDF, image, and unstructured
document handling.

Refs:
- CVE-2026-4308
- Report by @YLChen-007
2026-04-12 02:00:01 +02:00
Alessandro
071194281c
Merge pull request #1498 from 3clyp50/ready
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
Delete pull_request_template.md
2026-04-11 19:02:30 +02:00
Alessandro
7c2ac13487 Delete pull_request_template.md 2026-04-11 19:01:28 +02:00
Alessandro
1532428708
Merge pull request #1497 from 3clyp50/ready
add built-in A0 CLI Connector plugin
2026-04-11 18:57:50 +02:00
Alessandro
8c5cf1f69f add built-in A0 CLI Connector plugin
Introduce the builtin `_a0_connector` plugin that lets the host-side
A0 CLI connect to Agent Zero over authenticated HTTP and `/ws`.

This adds connector capability discovery, chat/context lifecycle
endpoints, log streaming, and the remote text editing, code execution,
and file tree bridge used by the CLI workflow.
2026-04-11 18:56:32 +02:00
Alessandro
85654c6cc7 Merge branch 'main' into ready 2026-04-11 18:52:33 +02:00
Alessandro
48bbe778fe
Merge pull request #1496 from 3clyp50/cli
add a0-setup-cli Skill and restore lexical trigger matching
2026-04-11 18:50:57 +02:00
Alessandro
991680270c
Merge pull request #1492 from sena-labs/docs/contributor-sharing-safety-main
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
docs: add contributor sharing and fork safety guidance
2026-04-11 18:49:51 +02:00
Alessandro
e131b65442
Merge pull request #1489 from 3clyp50/integrations
integrations: redesign messaging settings and add native chat controls
2026-04-11 18:49:35 +02:00
Alessandro
395ef8dd33 integrations: add native chat controls and email config presets
Add shared transport-level control commands so Telegram, WhatsApp, and
email threads can manage the active chat directly.

- add a shared integration command helper for /project, /config, /send,
  and /queue send
- wire native command handling into Telegram and WhatsApp sessions
- expose Telegram control commands through bot command routing and update
  transport docs
- add email thread command handling for existing A0 email conversations
- add an optional per-handler email conversation preset backed by model
  presets in the email settings UI and default config
- document the new transport control flow across Telegram, WhatsApp, and
  email
2026-04-11 18:49:13 +02:00
Alessandro
954eca3563 add a0-setup-cli Skill and restore lexical trigger matching
Add a builtin `a0-setup-cli` skill for guiding host-side A0 connector setup,
and restore the lightweight trigger-word based skill matching flow, which many users asked for.

- add builtin `skills/a0-setup-cli/` with installer-first host setup guidance,
  container guardrails, fallback install paths, and example responses
- fix `helpers.skills_cli` so builtin skills under `/skills` are discoverable,
  searchable, and validatable
- restore trigger-pattern scoring in runtime `search_skills()`
- re-enable `skills_tool:search` in the current tool flow
- add lightweight lexical relevant-skill recall for the current user message
  without reintroducing memory/vector-db skill recall
- update skill prompts to steer the agent toward search/load when requests
  match skill trigger phrases
2026-04-11 18:03:05 +02:00
sena-labs
834cbe6f54 docs: add contributor sharing and fork safety guidance 2026-04-11 13:20:50 +02:00
Alessandro
2000ba74a3 ui: redesign email, Telegram, and WhatsApp settings
Redesign the three messaging integration panels with a clearer, more guided
setup flow and polished user experience.

- simplify the email panel by surfacing the essentials first, moving
  advanced scheduling behind Advanced, and making connection checks more
  visible
- redesign Telegram and WhatsApp as step-based setup flows with clearer
  status states, safer access warnings, richer test feedback, and more
  responsive layouts
- add shared plugin-settings wizard footer support, extract WhatsApp state
  into its own store, and align test-connection messages with the new UX

ux: ease Email connector setup and refresh copy

- Redesign the Email connector settings around a guided first-run flow with a clearer empty state, provider presets, and much friendlier copy
- Move server, routing, and scheduling power-user controls into an `Advanced` section while keeping the existing config model compatible
- Improve connection-test messaging, add Exchange inbound validation, and refresh the dashboard Email card copy while keeping the card visible
- Verify the updated setup flow in the browser on desktop and mobile

update and simplify x-data based on established frontend patterns

Update 10_discovery_cards.py

further polishing and first-draft no-click model for email and telegram

update whatsapp

Update telegram-config-store.js
2026-04-11 01:40:24 +02:00
Nicolas Leão
c06e13f8c2
Merge pull request #1374 from keyboardstaff/model-config
Some checks failed
Build And Publish Docker Images / plan (push) Has been cancelled
Build And Publish Docker Images / build (push) Has been cancelled
refactor(_model_config): componentize model config, split store into mixins, unify API key management
2026-04-08 21:43:21 -03:00
Nicolas Leão
b1ffb3cf69
Merge branch 'ready' into model-config 2026-04-08 21:15:51 -03:00
Alessandro
b5e110ad0d
Merge pull request #1470 from 3clyp50/ready
Some checks failed
Build And Publish Docker Images / plan (push) Has been cancelled
Build And Publish Docker Images / build (push) Has been cancelled
feat: add builtin skill selector; number of images in vision_tool; _memory hardening and improvements
2026-04-08 14:06:21 +02:00
Alessandro
c9eadf400a add built-in Skills selector plugin
Added a builtin plugin that you can open from the chat input plus button menu, which shows you a list of skills that you can directly activate in the current context/project.

Default configs allow users to start over with skills already active, instead of losing time and tokens asking Agent Zero to do it.

Update prompt for manual skill selector

add thumbnail for _skills builtin plugin
2026-04-08 14:02:09 +02:00
Alessandro
1cbecc241e memory: harden FAISS integrity and consolidation scoring
- Add FAISS index integrity checks using a SHA-256 sidecar (`index.faiss.sha256`) and write hash on save.
- Harden `memory_load` filter evaluation with input validation (allowlist + length cap) and `simple_eval(..., functions={})`.
- Add score-preserving similarity search and use real relevance scores in consolidation (including best-score dedupe by memory id).
- Prevent utility-model context overflows by truncating memorize input history for fragments and solutions.
2026-04-08 14:02:05 +02:00
Alessandro
5dc589486a plugins: hide agent profile selector when out of scope 2026-04-08 13:28:19 +02:00
Alessandro
33b88d5731 add number of imgs in vision tool 2026-04-08 13:06:03 +02:00
Alessandro
a1faa64f34
Merge pull request #1466 from gdeyoung/fix/empty-dict-tool-args-validation
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
fix: validate_tool_request rejects valid empty tool_args dict
2026-04-07 19:25:47 +02:00
Greg DeYoung
7cf8905af5 fix: validate_tool_request rejects empty tool_args dict (PATCH-015)
Bug: not tool_request.get("tool_args") evaluates True for empty dict {}
causing ValueError crash on any tool call with no arguments.
Scheduler list_tasks, health checks, etc all broken.

Fix: Changed to existence check ("tool_args" not in tool_request)

Co-authored-by: Agent Zero <agent@zero>
2026-04-07 01:09:00 +00:00
Jan Tomášek
2d95cd9fc0
Merge pull request #1433 from 3clyp50/ready
Some checks failed
Build And Publish Docker Images / plan (push) Has been cancelled
Build And Publish Docker Images / build (push) Has been cancelled
add thumbnail for _discovery plugin
2026-04-03 17:15:57 +02:00
Alessandro
92fcdbf8e6 add thumbnail for _discovery plugin 2026-04-03 17:14:34 +02:00
Jan Tomášek
2da44168da
Merge pull request #1428 from 3clyp50/dirtyjson
Dispatch tool calls at first completed JSON object
2026-04-03 17:05:48 +02:00
Alessandro
5a2223596a stop tool dispatch at first completed json object
Tool execution no longer waits for the full streamed assistant text. We now detect the first explicitly closed top-level JSON object, freeze that snapshot as the canonical tool request, and stop the model stream there for dispatch.

To make that safe, DirtyJson completion semantics are tightened so completed=true only means the root object was explicitly closed, not that parsing hit end of file. I also restricted the new extraction path to object roots only, since tool calls are always brace-delimited objects, and added tests for parser completion and early stream stop.
2026-04-03 16:56:21 +02:00
Alessandro
ec80702b80 add completion detection to DirtyJson parser
Track parsing depth via _pop_stack() helper. Exposes a 'completed' flag that signals when the root JSON structure is fully closed, allowing stream consumers to break early instead of waiting for irrelevant tokens.
2026-04-03 15:45:58 +02:00
Jan Tomášek
fbf6a8dc39
Merge pull request #1426 from 3clyp50/ready 2026-04-03 14:35:56 +02:00
Alessandro
db8bc111ca prompts: strict json guidance; concise responses
Trying to steer the model into treating the final curly brace of a JSON obj as EOS token. Also defaulting to concise responses, expanding only when needed.
2026-04-03 14:13:37 +02:00
Jan Tomášek
3507425380
Merge pull request #1423 from 3clyp50/prompts4
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
prompts: restore legacy, plugins, agent0 profile
2026-04-03 07:10:49 +02:00
Alessandro
86dca86f6f prompts: restore legacy, plugins, agent0 profile
Restore main.communication, main.solving, main.tips and tool.response, which made the model dumber. For some reasons the drawback was more visible with frontier LLMs.

restore builtin plugins and agent0 profile
2026-04-03 06:49:25 +02:00
Jan Tomášek
3a512b8c1b
Merge pull request #1419 from 3clyp50/prompts
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
prompts: restore tool examples for better model guidance
2026-04-02 21:42:49 +02:00
Alessandro
ef92a5e378 prompts: restore tool examples for better model guidance
Commit 54362bf8ee went too far stripping too many JSON examples to guide LLMs.
2026-04-02 18:50:13 +02:00
Jan Tomášek
756654b2ba
Merge pull request #1389 from 3clyp50/a0_small
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
prompts: adopt compact defaults and rebalance guidance
2026-04-02 16:21:29 +02:00
Jan Tomášek
01de1f7bca
Merge pull request #1402 from 3clyp50/discovery
feat: add plugin discovery to dashboard and onboarding wizard
2026-04-02 16:21:05 +02:00
Jan Tomášek
ace6c9e137
Merge pull request #1411 from 3clyp50/ready
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
fix: guard against missing plugin directory in config loads
2026-04-01 21:19:15 +02:00
Alessandro
1cccb68d0d fix: guard against missing plugin directory in config loads
`find_plugin_dir` can return `None` if a plugin cannot be found. Passing
this null value to `files.get_abs_path` caused crashes during config
retrieval. `get_plugin_config` and `get_default_plugin_config` now check
for a valid directory and return early if it is missing.
2026-04-01 20:42:24 +02:00
Alessandro
74efea68cd prompts: override role with specifics md file 2026-04-01 18:47:36 +02:00
Nicolas Leão
bc274e5d80
Merge pull request #1404 from 3clyp50/ready
Some checks failed
Build And Publish Docker Images / plan (push) Has been cancelled
Build And Publish Docker Images / build (push) Has been cancelled
quick update flow and migration guidance
2026-03-31 17:01:15 -03:00
Alessandro
bfe4119d72 quick update flow and migration guidance 2026-03-31 21:53:47 +02:00