Compare commits

...

1 Commits

Author SHA1 Message Date
freemo 2afb3aeaea docs: update CHANGELOG, plan CLI reference, and MCP API docs for recent PRs
CI / lint (pull_request) Successful in 27s
CI / quality (pull_request) Successful in 45s
CI / typecheck (pull_request) Successful in 53s
CI / security (pull_request) Successful in 53s
CI / build (pull_request) Successful in 24s
CI / helm (pull_request) Successful in 38s
CI / unit_tests (pull_request) Successful in 6m32s
CI / docker (pull_request) Successful in 1m19s
CI / coverage (pull_request) Successful in 10m8s
CI / e2e_tests (pull_request) Successful in 17m36s
CI / integration_tests (pull_request) Successful in 21m23s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 58m27s
- CHANGELOG: add [Unreleased] entries for PRs #2616, #2600, #3022, #2629, #2782
  - CLI: agents plan list --namespace/-n filter option
  - MCP: error message extraction fix for MCP 1.4.0 protocol compliance
  - CI: nox output captured as Forgejo artifacts with 30-day retention
  - Benchmarks: ASV performance benchmark suite for providers module (68 methods)
  - CI: all quality gates restored to passing on master
- docs/reference/plan_cli.md: add --namespace/-n option to agents plan list,
  update Filters panel description, add namespace filter examples
- docs/api/mcp.md: document MCP 1.4.0 error response shape and invoke() error
  handling, note the pre-fix behavior for migration awareness
2026-04-05 05:25:40 +00:00
3 changed files with 74 additions and 2 deletions
+33
View File
@@ -86,6 +86,21 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
This eliminates redundant Alembic migrations across all test suites and reduces
total test suite wall-clock time. (#2334)
- **CI — Nox output captured as CI artifacts**: All 8 nox-running CI jobs
(`lint`, `typecheck`, `security`, `quality`, `unit_tests`, `integration_tests`,
`e2e_tests`, `coverage`) now pipe their output through `tee` to named log files
and upload them as Forgejo artifacts (`ci-logs-<job>`) with `if: always()` so
logs are available even on failure. Multi-session jobs append to a single combined
log. Artifacts are retained for 30 days. Seven agent definition files updated to
reference the artifact download API for CI diagnostics. (#2782)
- **Benchmarks — ASV performance benchmark suite for providers module**: Added 5
new ASV benchmark files under `benchmarks/` covering all performance-sensitive
paths in the `providers` module: `ProviderCostTable` construction and iteration,
`CostTracker` accumulation, `FallbackSelector` selection, `ProviderRegistry`
enumeration and lookup, and LLM adapter instantiation for all 5 built-in
providers. 68 benchmark methods total. (#3022)
### Fixed
- Fixed session leak in all `AutomationProfileRepository` public methods
@@ -160,6 +175,24 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- `ThoughtBlockWidget` background corrected from `$primary 20%` to `$primary-muted 20%`,
making thought blocks visually lighter and more subtle per spec §29811. (#1448)
- **CLI — `agents plan list` gains `--namespace`/`-n` filter**: The `plan list`
command now accepts `--namespace`/`-n` to filter plans by namespace, bringing it
into alignment with the specification and achieving parity with `agents action list`.
The service layer already supported namespace filtering; only the CLI layer was
missing the option. The Filters panel in rich output displays `Namespace: <value>`
when the flag is active. (#2616)
- **MCP — Error message extraction corrected for MCP 1.4.0**: `MCPToolAdapter.invoke()`
now reads error messages from `content[0].text` per the MCP 1.4.0 protocol
specification, replacing the previous non-standard `error` key lookup that silently
returned `"unknown error"` for all real MCP 1.4.0 servers. Safe guards prevent
`IndexError` on absent or malformed `content` arrays. (#2600)
- **CI — All quality gates restored to passing on master**: Resolved format
violations, incomplete A2A JSON-RPC 2.0 migration in test step files, stale
session CLI output format assertions, plan list output format regressions, and
stale plan apply test data. No quality gates were suppressed or bypassed. (#2629)
## [3.7.0] — 2026-04-02
### Added
+21
View File
@@ -68,6 +68,27 @@ await adapter.disconnect()
| `invoke(name, arguments)` | Call a tool with input validation |
| `register_tools(registry)` | Bulk-register discovered tools |
### Error Handling in `invoke()`
`MCPToolAdapter.invoke()` complies with the **MCP 1.4.0** protocol for error
responses. When a tool call returns `isError: true`, the error message is
extracted from `content[0].text`:
```python
# MCP 1.4.0 error response shape
{
"isError": True,
"content": [{"type": "text", "text": "Tool execution failed: ..."}]
}
```
Safe guards prevent `IndexError` when `content` is absent or empty — the
adapter falls back to `"unknown error"` in those cases.
> **Note (v3.7.0+):** Prior to this fix, `invoke()` read from a non-standard
> `error` key that no real MCP 1.4.0 server populates, causing all error
> messages to silently appear as `"unknown error"`. (#2600)
---
## `MCPToolDescriptor`
+20 -2
View File
@@ -109,6 +109,7 @@ agents plan list [REGEX] [OPTIONS]
| Flag | Description |
|-------------------------|--------------------------------------------------|
| `--namespace`, `-n` | Filter by namespace |
| `--phase` | Filter by phase (strategize, execute, apply) |
| `--state` | Filter by processing state |
| `--processing-state` | Alias for `--state` |
@@ -116,6 +117,22 @@ agents plan list [REGEX] [OPTIONS]
| `--action` | Filter by action name |
| `--format`, `-f` | Output format |
### Examples
```bash
# Filter by namespace
agents plan list --namespace myteam
# Short form
agents plan list -n myteam
# Combined namespace + state filter
agents plan list --namespace myteam --state processing
# Namespace filter with no results
agents plan list --namespace nonexistent
```
### Rich Output
The `rich` format renders a **Plans** table with columns:
@@ -131,8 +148,9 @@ The `rich` format renders a **Plans** table with columns:
After the table:
- **Filters** panel — shown only when at least one filter (`--phase`, `--state`,
`--project`, `--action`) is active. Lists the active filter values.
- **Filters** panel — shown only when at least one filter (`--namespace`, `--phase`,
`--state`, `--project`, `--action`) is active. Lists the active filter values,
with `Namespace: <value>` displayed first when `--namespace` is provided.
- **Summary** panel — total plans, processing count, completed count, and errored count.
Followed by a `✓ OK N plan(s) listed` success message.