-
Notifications
You must be signed in to change notification settings - Fork 0
Changelog
McAmner edited this page Jun 2, 2026
·
1 revision
All notable changes to mq-agent are documented here.
Format follows Keep a Changelog. Versioning follows Semantic Versioning.
-
mq-image-analyzedefault MCP endpoint (:8766) for visual perception tools. - Read-only safety classification for
observe_architecture,image_ocr,analyze_*,extract_*,reverse_*andcompare_*MCP tool families. - Tests and docs for routing
mq-agent run-tool observe_architectureandmq-agent run-tool image_ocrto mq-image-analyze. -
mq-agent review file|diff|repo --architecture-image <path>/--visual <path>to passvisual_architecture_observation.v1context from mq-image-analyze into mq-mcp architecture reviews.
- Architecture-memory context in review workflows —
list_architecture_decisionscalled automatically after review findings; shown as compact panel when tool is available; silent when not present in mq-mcp -
--fastflag onreview file/diff/repo— passesfast=Trueto mq-mcp; mq-mcp routes to Class A tools internally (model-selection policy) -
mq-agent learn status— check mq-mcp learn system availability -
mq-agent learn search <query>— search mq-mcp learned review patterns (read-only) -
mq-agent learn explain <pattern-id>— fetch pattern explanation (read-only) -
MultiMCPBridge._call_optional_tool()— like_call_required_toolbut returns None when tool is absent, for use with optional enrichment -
MultiMCPBridge.get_architecture_decision(id)— fetch single decision by ID - 24 new tests in
tests/test_v1_3_features.py(292 total)
-
_review_flags()includesfastkey; existing flag dicts updated in tests -
_run_review()accepts optionalbridgefor arch-context rendering -
COMMAND_SURFACE.md— review section extended with--fast; learn section added -
EXAMPLES.md—--fastand arch-context examples; learned patterns section added -
ROADMAP.md— v1.1.0 remaining items ticked; v1.3.0 section added; release map updated
-
mq-agent memory search <query>— searches mq-mcp semantic memory viasearch_semantic_memory; renders key/excerpt table; degrades with a clear error when mq-mcp v1.4.0 tool is absent;--jsonsupported -
mq-agent memory store <key> <value> --approve— writes to mq-mcp semantic memory viastore_semantic_memory(Class C write tool); requires--approve;--dry-runshows planned call without executing;--jsonsupported -
MultiMCPBridge.search_semantic_memory()andstore_semantic_memory()bridge methods -
mq-agent mcp status— extended to show semantic memory item count and contract freshness (validate_orchestration_contract) when those tools are available in mq-mcp - 16 new tests in
tests/test_semantic_memory_cli.pyandtests/test_mcp.py(268 total)
-
COMMAND_SURFACE.md— memory section updated withsearchandstoreentries;mcp statusnotes updated with enrichment -
EXAMPLES.md— semantic memory section extended with search/store examples -
ROADMAP.md— v1.2.0 items ticked; v1.1.0 marked Done in release map
-
mq-agent review file/diff/repo— pass-through review orchestration via mq-mcp (review_file,review_diff,review_repo); severity findings rendered without local reinterpretation -
--security,--architecture,--riskflags forwarded to mq-mcp review contracts -
--dry-runon all review commands — shows what would be called without executing -
validate_orchestration_contractcheck inmq-agent doctor— verifies mq-mcp orchestration contract is available - 3 new dry-run tests in
tests/test_review_cli.py(252 total)
-
COMMAND_SURFACE.md— review section updated with--dry-runentry -
EXAMPLES.md— review section extended with dry-run examples -
ROADMAP.md— v1.1.0 items ticked; arch-memory and model-selection deferred to v1.2.0 (require mq-mcp v1.4.0+); release map updated to In Progress
-
mq_agent/cli/render.py— Rich rendering helpers (print_steps,print_tool_spec,print_mcp_tool_table,print_swarm_result) extracted frommain.py; each takes an explicitconsolearg for testability -
mq_agent/core/diagnostics.py—run_checks()andrequired_checks_pass()fordoctorcommand; no CLI/Rich dependencies -
tests/test_diagnostics.py— 8 tests for environment health checks
-
Plannernow reads model viaload_config().effective_model()instead ofos.environdirectly; respects~/.mq-agent/config.jsonsettings -
main.pyreduced from 1381 → 1270 lines; all rendering and doctor logic delegated -
ARCHITECTURE.mdrewritten: full module map, two parallel runtime modes, config schema, safety model table, module boundaries -
EXAMPLES.mdextended to cover all commands:task,browser,swarm,memory,mcp,score,signal -
pyproject.tomldescription updated to "workflow orchestration runtime"
237 tests · green CI · protected main · full docs · complete examples · stable contracts locked in v0.9.0 · versioned releases v0.1.0–v1.0.0
-
mq_agent/config.py—MqAgentConfigdataclass withload_config()andsave_config(). Schema:safety_mode,model,dry_run,working_dir. Reads from~/.mq-agent/config.json; falls back to built-in defaults.effective_model()prefersMQ_AGENT_MODELenv var. - 7 new contract tests in
tests/test_orchestration_contract.py:-
test_plan_step_fields_are_stable— locksPlanStepfield set -
test_step_result_fields_are_stable— locksStepResultfield set -
test_agent_manifest_fields_are_stable— locksAgentManifestfield set -
test_agent_state_to_dict_shape_is_stable— locksto_dict()keys test_agent_manifest_allowed_tools_must_be_subset_of_registrytest_run_task_tool_delegates_to_task_runnertest_tool_registry_has_no_positional_only_params
-
-
PlanStep(core/state.py) — added docstring clarifying it is the Executor loop step model, distinct fromStepResultin task_runner. -
StepResult(core/task_runner.py) — added docstring clarifying it is the declarative YAML task step model, distinct fromPlanStep. -
SwarmRunner(core/swarm.py) — expanded docstring: documents it as a separate runtime mode from the Executor loop, not a competing impl.
218 tests (was 211).
-
mq-agent swarm list— list available swarm configs with agents and safety classes -
mq-agent swarm plan <config>— show participating agents; no API calls needed -
mq-agent swarm run <config> [path]— execute a named swarm, unified report -
mq-agent swarm audit [path]— shorthand: audit + signal + docs swarm -
mq-agent swarm release-check [path]— shorthand: CI + audit + release swarm -
mq_agent/core/swarm.py—AgentManifest,SwarmConfig,AgentResult,SwarmResult,SwarmRunner -
mq_agent/agents/swarm_registry.py— built-in swarm configs:audit,release-check,ci - Each
AgentManifestdeclares: purpose, safety_class, allowed_tools, requires_approve, output_contract, failure_behavior - Dry-run mode requires no API key and skips all agent execution
-
--approvegate for write-capable agents (releasemanifest) -
tasks/swarm_audit.yaml— declarative swarm audit task workflow -
tests/test_swarm.py— 29 tests covering manifests, configs, runner, registry, CLI - 190 tests total
-
mq-agent browser inspect <url>— fetch and parse URL metadata: title, description, headings, links, word count -
mq-agent browser summarize <url>— plain-text content summary from a URL -
mq-agent browser verify-release <url>— verify release page fields;--tag <v>checks expected version tag -
mq_agent/tools/browser_tools.py—fetch_url,inspect_url,summarize_url,verify_release_url -
_HTMLExtractor— stdlib-only HTML parser (title, description, h1/h2, links, text) - URL safety gate: blocks
file://,ftp://,data:,javascript:schemes - Browser tools registered in
TOOL_REGISTRY— usable in task YAML workflows -
tasks/browser_verify.yaml— declarative task for release page verification -
tests/test_browser.py— 27 tests covering URL safety, HTML parsing, inspect/summarize/verify, and CLI commands - 161 tests total
-
mq-agent task list— list available YAML task workflow files -
mq-agent task list --json— machine-readable task list with name, description, step count -
mq-agent task run <name>— execute a declarative YAML workflow via the tool registry -
mq-agent task run <name> --dry-run— preview steps without execution (default: False) -
mq-agent task run <name> --json— machine-readable step results -
mq_agent/core/task_runner.py—TaskStep,StepResult,Task,load_task,run_task,find_task_files - Task lookup by filename stem OR internal YAML
name:field — bothauditandrepo-auditresolve correctly -
tests/test_task_runner.py— 18 tests coveringload_task,run_task,find_task_filesand CLI commands
-
mq-agent mcp start— start mq-mcp server in background (SSE transport, PID file managed) -
mq-agent mcp stop— stop the background mq-mcp server -
mq_agent/mcp/manager.py— PID-file-based process lifecycle:start(),stop(),is_running(),read_pid() -
mq-agent mcp statusnow shows process state (running/not running) from PID file alongside HTTP reachability -
mq-agent mcp status --jsonincludesprocess_runningandpidfields -
mq-agent mcp start/stop --json— machine-readable output - 14 new tests in
tests/test_mcp.pycovering manager module and CLI commands
-
mq-agent mcp status— not-running state now shows "Start with: mq-agent mcp start" -
MCPBridge.not_reachable_message()— now suggestsmq-agent mcp startinstead of raw uv command
-
mq-agent memory doctor— diagnose environment with per-item status and actionable fixes -
mq-agent memory doctor --json— machine-readable diagnostics -
mq-agent memory status --json— machine-readable status output -
DoctorReportandDiagnosticItemdataclasses inmq_agent/memory/semantic.py -
doctor()function inmq_agent/memory/semantic.py -
tests/test_memory_cli.py— 18 CLI-level tests covering dry-run default, approval gate, JSON output and doctor diagnostics - Example output for
memory doctorindocs/SEMANTIC_MEMORY.mdand README
- README semantic memory section expanded with verified output and
memory doctorexample -
docs/COMMAND_SURFACE.mdupdated withmemory doctorand--jsonvariants
-
mq-agent memory status— check vector store ID and repo-signal availability -
mq-agent memory build .— dry-run semantic upload preview (safe default) -
mq-agent memory refresh . --approve— upload semantic memory (gate required) -
mq_agent/memory/semantic.py—SemanticMemoryStatus,get_vector_store_id(),status(),build() -
docs/SEMANTIC_MEMORY.md— commands, environment, safety model and failure states -
scripts/smoke-memory.sh— smoke test for memory status and build dry-run
-
memory builddefaults to--dry-run; no upload without--no-dry-run -
memory refreshrequires--approve; exits 1 without it - Missing vector store and missing repo-signal reported explicitly, never silent
- README updated to v0.5.0 with semantic memory section
- Roadmap updated: v0.5.0 semantic memory marked complete; autonomous loop/browser moved to Later
-
docs/COMMAND_SURFACE.md— canonical command-count reference for mq-agent, MCP commands, mqlaunch menu items, direct prompt commands and smoke-test coverage - Docs consistency checks guard mqlaunch command counts and require all six direct prompt commands to be documented
-
mq-agent docs-audit .— CLI command exposingDocsAgent(implementation existed but had no registered entrypoint) -
MQ_AGENT_MODELenv var — overrides the planner model (default:gpt-4o) -
MQ_AGENT_VERIFIER_MODELenv var — overrides the verifier model (default:gpt-4o-mini) -
memoryfield onAgentState—Memorywired into the agent lifecycle;AuditAgentloads prior context and saves summary after each run
-
mq_agent/cli.py— dead parallel click-based CLI (never registered as entrypoint,clickwas an undeclared dependency) -
mq_agent/memory/— empty directory left over from a refactor
- Safety gate
_is_destructive()matched keywords in step descriptions ("format output", "remove duplicates") — now checksrun_commandargs only -
find_files()parameter renamedsuffix→patternto match AI planner output; default updated from".py"to"*.py" - TUI version label hardcoded to
v0.1.0— now reads__version__from package metadata - TUI command list was stale (7 entries, pre-v0.3.0) — updated to all 12 current commands
- TUI
subprocess.run()blocked the Textual event loop — replaced withasyncio.create_subprocess_execwith streaming output -
__version__now reads from package metadata instead of a hardcoded string - Smoke test removed
release-check --dry-run(requiresOPENAI_API_KEY); replaced withrepo-summary .
- README and GitHub Pages updated to v0.4.1
-
docs/index.htmlrestructured: 6-card architecture grid, commands split by API-key requirement, links as 2-column grid -
docs/COMMAND_SURFACE.mdupdated withdocs-auditand corrected smoke-test coverage table
-
mq-agent-menu.sh(macos-scripts) — 12-item agent menu: REPO ANALYSIS (1-4), AI COMMANDS (5-8), ENVIRONMENT (9-10), MCP LOCAL TOOLS (11-12) -
mqlaunch agent ...command surface for doctor, score, audit, release-check, MCP status and MCP tools - 6 direct prompt commands wired into mqlaunch:
agent score,agent audit,agent doctor,agent release-check,agent mcp-status,agent mcp-tools -
scripts/smoke-mqlaunch.sh— smoke test that verifiesmqlaunch agent ...can reach mq-agent without a live session -
docs/MQLAUNCH_INTEGRATION.md— bridge architecture, available commands, and smoke-test usage
- README: v0.4.0 status section; mqlaunch bridge section added; Roadmap updated
- ROADMAP: v0.4.0 marked done; v0.5.0 is autonomous loop mode
- Bumped to
0.4.0
-
mq_agent/tools/mcp_registry.py—MCPToolSpecdataclass,classify_tool_name(), and five safety classes:read-only,write-capable,subprocess,dangerous,unknown -
mq-agent mcp status— checks mq-mcp reachability and reports tool counts by safety class -
mq-agent mcp tools— lists all MCP-discovered tools with safety class and description -
mq-agent tools --describe <name>— shows description, schema, examples and safety class for a tool -
mq-agent tools --mcp— includes discovered MCP tools alongside built-in tools -
mq-agent tools --json— JSON output for built-in and/or MCP tool listing -
mq-agent run-tool <tool>— runs a specific MCP tool through mq-agent safety gates;--arg key=valuefor arguments -
docs/MCP_INTEGRATION.md— architecture and usage guide for mq-mcp integration -
docs/TOOL_ROUTING.md— safety classification reference and routing rules
-
mq_agent/tools/mcp_bridge.py— addedlist_tool_specs(),describe_tool(),not_reachable_message(), and_fetch_tools_raw()for structured metadata; backward-compatible -
mq-agent tools— now accepts--describe,--mcp, and--jsonflags - README updated with v0.3.0 status, new CLI commands, and test count (70, was 37)
- ROADMAP updated: v0.3.0 marked complete, v0.4.0 is mqlaunch integration
- Unknown MCP tools are blocked by default — no classification, no execution
- Write-capable and subprocess tools require
--approveto run - Dangerous tools require
--dangerousto run - Dry-run mode previews the intended MCP call without contacting mq-mcp
- Fail-closed: when mq-mcp is unavailable,
run-toolexits with a clear error and startup instructions
-
tests/test_mcp.py— 33 new tests covering: name classification (17),MCPToolSpecconstruction and round-trip (9), bridge behavior when unavailable (6), safety count validation (1) - Total: 70 tests pass (was 37) — no OpenAI API key or mq-mcp server required
- Bumped to
0.3.0
-
scripts/check-docs-consistency.sh— verifies version sync across VERSION, pyproject.toml, README badge, README status section, CHANGELOG, and docs/index.html; blocks stale score strings (70/100,8/16) and old version references -
release-check.sh— pre-release gate: tests, lint, docs consistency - Docs consistency step added to
tests.ymlCI workflow - ROADMAP rewritten to reflect actual done/next/later state (was showing everything as unchecked)
-
docs/index.htmlversion badge corrected fromv0.2.1tov0.2.4 - README status badge and section heading updated from
v0.2.3tov0.2.4 -
scripts/check-install.sh:doctornow uses|| true(matches CI, avoids failure withoutOPENAI_API_KEY) - Version bumped to
0.2.4in VERSION and pyproject.toml
-
Proofsection in README — lists what is actually verified -
scripts/check-install.sh— local install smoke test -
.github/workflows/install-smoke.yml— CI smoke test (no API key) - README
Demosection updated with real 100/100 output - README status section updated to
v0.2.3
- Version bumped to
0.2.3
-
docs/DEMO.md— end-to-end walkthrough with real command output -
docs/COMMANDS.md— full command reference with safety modes and flags -
docs/SAFETY_CONTRACT.md— what the agent may/must not do, blocked patterns, audit trail -
docs/MQ_ECOSYSTEM.md— mqlaunch, mq-agent, mq-hal, mq-mcp, repo-signal integration map -
SKILLS.md+skills/— four skill definitions: repo-audit, release-readiness, signal-assessment, ci-diagnosis - README: 30-second demo section, Use cases, tiered install (dev/GitHub/PyPI)
- GitHub: 11 topics set
-
read_file()acceptsfile_pathkwarg (GPT-4o natural argument compat) -
signal_tools.pyruff + mypy clean (UP035, no-redef, import sort) -
mcp_bridgelist_tools return type narrowed tolist[str] - planner/verifier:
json.loads(content or "{}")—str | Noneguard - TUI:
BINDINGStype aligned with TextualAppbase class - TUI:
Log()markup kwarg removed (not supported) - CI:
--systemflag removed from uv install;[signal]extra added -
python-dotenvauto-load from~/mq-agent/.envand./.env
- Version bumped to
0.2.2
-
mq_agent/tools/signal_tools.py— four tool wrappers around repo-signal's public API:-
repo_scan— full repo scan: project type, languages, tooling, entry points, focus areas -
repo_readme_score— README quality score 0–100 with visual bar and per-check breakdown -
repo_publish_checklist— publish readiness checklist with grouped checks and action hints -
repo_analyze— full repo-signal analysis report (markdown) -
repo_signal_json— combined structured dict for use by agents and CI
-
-
mq_agent/agents/signal_agent.py—SignalAgent: static signal pass + AI improvement plan -
mq-agent signal [path]— full assessment with overall score, README gaps, focus areas, AI plan -
mq-agent score [path]— instant README score + publish checklist (no AI, no API key needed) - All four signal tools registered in
TOOL_REGISTRYandSAFE_TOOLS -
repo-signaladded as[signal]optional extra inpyproject.toml -
mq-agent doctornow shows repo-signal availability - 11 new tests in
tests/test_signal_tools.py(37 total)
- Version bumped to
0.2.0
-
*expr or fallbacksyntax error inside list literals in signal_tools.py
-
Planner— OpenAI gpt-4o backed structured plan generation from goals -
Executor— tool registry routing with dry-run and safety gate enforcement -
Verifier— per-step AI verification using gpt-4o-mini -
Memory— two-level memory: session (ephemeral) and persistent (JSON on disk) -
SafetyGate— four safety modes:read-only,suggest,execute,dangerous -
AgentState— structured state object tracking plan, context and progress - Git tools:
git_status,git_log,git_diff,git_branch,git_remote - Shell tools:
run_commandwith blocked dangerous pattern list - Repo tools:
repo_summary,list_files,read_file,find_files - MCP bridge: HTTP bridge to mq-mcp server
-
AuditAgent,ReleaseAgent,CIAgent,DocsAgent - Typer CLI with
audit,plan,release-plan,release-check,repo-summary,run,fix-ci,doctor,tools,tui - All commands support
--dry-runand--json - Textual TUI with sidebar navigation and live log output
- GitHub Actions CI: tests + lint + type check on every push
- 26 unit tests, no OpenAI calls required
- Declarative task YAML:
release.yaml,audit.yaml,fix_ci.yaml
-
git_logparameter renamedn→limitto match GPT-4o natural arg generation -
git_branch,git_remote,find_files,whichadded toSAFE_TOOLS - Executor: read-only mode now continues past step failures instead of stopping
- repo-signal integration
- repository audit scoring
- release readiness scoring
- semantic repository memory