Normalize tool contracts and slim prompt surface

Standardize multi-action tools around tool_args.action while keeping parser compatibility for older tool/args, tool_name:action, and method-shaped requests. This keeps new prompts clean without breaking agents that learned the previous dialect.

Move A0 connector remote execution/file tools into stable standard prompts, make remote targeting independent of the active chat context, and skill-gate beta computer-use remote so it no longer weighs down the always-on tool list.

Align text editor, scheduler, skills, office artifact, memory, notify, and browser prompts/tools around the canonical action contract. Add scheduler update/timezone handling, skills_tool read_file, text editor patch coverage, and fixes for memory_forget, behaviour_adjustment, and code execution progress warnings.

Reduce default prompt pressure by compacting browser and scheduler prompts into skill-backed manifests, shortening skill catalog descriptions, and pruning noisy framework knowledge. Remove obsolete connector prompt stubs and root tool-call knowledge examples.

Tests: conda run -n a0 pytest tests/test_a0_connector_prompt_gating.py tests/test_tool_action_contracts.py tests/test_task_scheduler_timezone.py tests/test_text_editor_context_patch.py tests/test_tool_request_normalization.py tests/test_office_document_store.py::test_odf_is_advertised_and_docx_remains_explicit_compatibility tests/test_office_document_store.py::test_document_artifact_accepts_method_alias_for_ods_create tests/test_skills_runtime.py tests/test_default_prompt_budget.py::test_a0_small_profile_removed_and_prompt_text_generic -q
This commit is contained in:
Alessandro 2026-05-09 21:54:43 +02:00
parent 30a97cb3f1
commit daf95ec3ab
55 changed files with 1656 additions and 1154 deletions

View file

@ -278,7 +278,7 @@ class CodeExecution(Tool):
if partial_output:
PrintStyle(font_color="#85C1E9").stream(partial_output)
truncated_output = self.fix_full_output(full_output)
self.set_progress(truncated_output)
await self.set_progress(truncated_output)
heading = self.get_heading_from_output(truncated_output, 0)
self.log.update(content=prefix + truncated_output, heading=heading)
last_output_time = now
@ -397,7 +397,7 @@ class CodeExecution(Tool):
return None
raise
truncated_output = self.fix_full_output(full_output)
self.set_progress(truncated_output)
await self.set_progress(truncated_output)
heading = self.get_heading_from_output(truncated_output, 0)
last_lines = (