Skip to content

Releases: massgen/MassGen

v0.1.94

05 Jun 17:14
cb2aef7

Choose a tag to compare

🚀 Release Highlights — v0.1.94 (2026-06-05)

v0.1.94 — Parallelism Hardening (Engineering Health) — strengthens the orchestrator's parallel execution. It moves the snapshot copy off the event loop so agents keep streaming concurrently, backs it with immutable versioned snapshots that keep the off-loop copy safe, and closes latent concurrency races. No per-backend functionality changes (parity principle).

⚡ Snapshot Copy Off the Event Loop

  • FilesystemManager.copy_snapshots_to_temp_workspace now runs its blocking rmtree/copytree/scrub on a worker thread via asyncio.to_thread
  • One agent's snapshot copy no longer stalls every other agent's streaming

🔒 Immutable, Versioned Snapshots

  • Each agent's snapshot path <base>/<agent_id> is now a symlink to an immutable <base>/.versions/<agent_id>/v<N> directory
  • save_snapshot (and the interrupted-turn partial save) publish a fresh version and atomically repoint the symlink instead of rewriting in place
  • The peer-context copy acquires (refcounts) the current version for the duration of its copy; GC never deletes a pinned or in-flight version
  • Eliminates the read-during-write race the off-loop copy would otherwise expose — coordinated by the new SnapshotVersionStore

🧵 Concurrency Correctness Fixes

  • R1 — lost peer-answer revision across the injection await window (counts now captured at selection time)
  • R2/R3 — lost background-subagent result from a blind queue pop (consume only the consumed ids)
  • R4 — leaked background trace-analyzer tasks on cleanup (cancelled before the flush)
  • R5 — cancel-without-await teardown (cancel_all_subagents now awaits cancellations against the live registry)
  • D2 — worktree-isolation degradation never surfaced because emit_status was called with an invalid status= kwarg whose TypeError was swallowed
  • D3 — changedoc enrichment made non-fatal

🧩 Unified Mid-Stream Injection

  • The two ~150-line per-backend get_injection_content closures collapsed into one build_midstream_injection(..., native=), preserving the update_context → refresh_checklist side-effect order on both paths
  • The triplicated background-wait interrupt provider consolidated into one helper

🧪 Tests

  • New race/regression suites driven under TDD with cost-free simulation: test_concurrency_race_fixes.py, test_snapshot_version_store.py, test_snapshot_versioned_save.py, test_snapshot_copy_offload.py, test_midstream_injection_unified.py, test_wait_interrupt_provider.py

📖 Install

pip install massgen==0.1.94

What's Changed

Full Changelog: v0.1.93...v0.1.94

v0.1.93

03 Jun 18:06
2018ebe

Choose a tag to compare

🚀 Release Highlights — v0.1.93 (2026-06-03)

v0.1.93 is an internal-quality release: no intended runtime behavior changes, but a smaller CLI surface, typed config validation, cleaner package contents, and stronger test/type-checking gates.

🧩 CLI Package Decomposition

  • massgen/cli.py was split into an 18-module massgen/cli/ package
  • The public import surface is preserved through the package facade
  • The Textual per-turn handler was extracted into a dependency-injected function
  • CLI helper and run-loop characterization tests cover the new seams

🛡️ Pydantic Config Migration

  • AgentConfig, CoordinationConfig, TimeoutConfig, StepModeConfig, and related nested config classes now validate field types on construction
  • Mode fields use Literal definitions in massgen/config_modes.py
  • config_validator derives valid mode sets from the typed definitions, reducing validator drift
  • pydantic>=2.0 is now a declared dependency

🔧 Correctness Fixes

  • Textual concurrent-run logging now preserves per-run session context
  • CoordinationConfig.from_dict() no longer lets absent YAML keys override defaults with None
  • Response backend tool-argument parsing now logs malformed payloads instead of silently dropping them
  • Backend/API parameter exclusion lists now derive from a single source

🧪 Test Signal & Typing

  • Coverage configuration now points at the real package
  • pytest.PytestReturnNotNoneWarning is treated as an error
  • CI enforces uv.lock via uv sync --frozen
  • scripts/mypy_island.sh adds a blocking incremental mypy gate
  • All bundled configs were validated after the migration

🧹 Dead Code Removal

  • Removed unreferenced legacy massgen/v1 and massgen/prototype code from the wheel

📖 Install

pip install massgen==0.1.93

What's Changed

Full Changelog: v0.1.92...v0.1.93

v0.1.92

01 Jun 15:59
583b3aa

Choose a tag to compare

🚀 Release Highlights — v0.1.92 (2026-06-01)

v0.1.92 is a maintainability release for MassGen's orchestration core, with a new Parallel Web Search MCP example included for research-heavy workflows. The main result: the largest orchestrator surfaces are smaller, more modular, and guarded by characterization tests before deeper behavior changes continue.

🧩 Orchestrator Collaborator Extraction

  • orchestrator.py drops from 21,599 to 8,574 lines
  • 49 collaborator classes are extracted into massgen/orchestrator_collaborators/
  • Existing public methods remain available through thin delegators
  • Shared mutable state still lives on the orchestrator, preserving current ownership semantics

🖥️ TUI Display Module Cleanup

  • Provider/model display logic moved to _textual_provider_model.py
  • Terminal capability probing moved to _textual_terminal_capabilities.py
  • Widget debug helpers moved to _textual_widget_debug.py
  • Public imports from textual_terminal_display.py stay stable

🔎 Parallel Web Search MCP

  • New parallel_search MCP registry entry
  • New example config: massgen/configs/tools/web-search/parallel_search_example.yaml
  • Supports Parallel's hosted Search MCP server for LLM-optimized web search and URL extraction
  • Optional PARALLEL_API_KEY enables higher rate limits

🧪 Characterization Coverage

  • massgen/tests/test_orchestrator_characterization.py
  • massgen/tests/frontend/test_textual_terminal_display_characterization.py
  • Existing integration/unit tests updated for the new collaborator seams
  • Refactor roadmap and remaining high-risk follow-up steps documented in docs/dev_notes/orchestrator_refactor_roadmap.md

📖 Getting Started

  • Quick Start Guide
  • Install:
    pip install massgen==0.1.92
  • Try Parallel Search:
    uv run massgen --config massgen/configs/tools/web-search/parallel_search_example.yaml "Research the latest advances in multi-agent AI systems"

What's Changed

New Contributors

Full Changelog: v0.1.91...v0.1.92

v0.1.91

27 May 19:02
20f70ef

Choose a tag to compare

🚀 Release Highlights — v0.1.91 (2026-05-27)

v0.1.91 hardens MassGen's release-critical configuration paths: YAML parsing is centralized, typo detection is strict enough to block releases, checklist runtime controls now flow through the same orchestrator helper, and native hook permission checks now honor nested protected paths before broad workspace write rules.

🧭 Centralized Config Wiring

  • CoordinationConfig.from_dict() owns orchestrator.coordination parsing
  • TimeoutConfig.from_dict() owns top-level timeout_settings parsing
  • AgentConfig.apply_orchestrator_config() owns top-level orchestrator runtime field application
  • CLI helpers remain import-compatible wrappers around the centralized implementations

🔎 Config Drift Detection

  • Unknown orchestrator.coordination.* keys now produce validation warnings
  • Unknown top-level orchestrator.* and timeout_settings.* keys are flagged the same way
  • scripts/validate_all_configs.py --strict treats those warnings as release-blocking
  • Typos such as fast_interation_mode, voting_sensitivty, and orchestrator_timout_seconds now surface before runtime

✅ Checklist Runtime Controls

  • max_checklist_calls_per_round is wired through the centralized orchestrator runtime helper
  • checklist_first_answer now follows the same runtime path
  • Planning controls and subagent timeout fields have parser and documentation parity coverage

🛡️ Native Hook Permission Safety

  • Gemini CLI and Codex standalone hook scripts now apply more-specific managed paths before broader parents
  • Nested read-only/protected paths override workspace-level write access
  • Claude Code native hook tests/docs now match the SDK-native additionalContext injection contract

🧪 Tests

  • massgen/tests/test_config_wiring_refactors.py
  • massgen/tests/test_coordination_config_wiring.py
  • massgen/tests/test_config_validator.py
  • massgen/tests/test_validate_all_configs_script.py
  • massgen/tests/test_native_hook_adapters.py
  • Updated Gemini CLI and Codex hook script coverage

📖 Getting Started

  • Quick Start Guide
  • Install:
    pip install massgen==0.1.91
  • Try It:
    uv run massgen --config massgen/configs/features/fast_iteration.yaml "Create an svg of an AI agent coding."

What's Changed

Full Changelog: v0.1.90...v0.1.91

v0.1.90

25 May 17:33
1d16113

Choose a tag to compare

🚀 Release Highlights — v0.1.90 (2026-05-25)

v0.1.90 strengthens MassGen's checklist-gated refinement loop: non-discriminative criteria are softened, checklist reasoning becomes next-round feedback, candidate ordering is counterbalanced, and gate thresholds now share one consistent 0-10 scale.

🎯 Discriminative-Power Pruning

  • Bootstrap criteria now compute per-criterion score spread across agents
  • Low-spread criteria are demoted to stretch so they stay visible without acting as hard gates
  • A protected floor prevents the gate from being hollowed out

🧠 Criterion Feedback Loop

  • Checklist score reasoning is extracted after each verdict
  • Per-agent score submissions keep the lowest-score reasoning per criterion as the most diagnostic signal
  • Next-round agents receive a <CRITERION FEEDBACK ...> memo with failed criteria marked

⚖️ Position-Bias Calibration

  • Candidate answer order rotates per scoring agent
  • Primacy-slot exposure is distributed across agents
  • Equal aggregate checklist scores break deterministically, independent of insertion order

📏 Unified Checklist Gate

  • ChecklistGate.from_budget(...) derives effective threshold, required-true count, and confidence cutoff together
  • The checklist gate now consistently uses a 0-10 threshold scale
  • Fast-iteration defaults continue to relax the gate as answer budget tightens

🧩 Shared Score Utilities

  • New massgen/score_utils.py centralizes score extraction and per-agent score-shape detection
  • Checklist server, quality server, and bootstrap criteria now share the same parsing behavior
  • llm_circuit_breaker_* kwarg parsing is consolidated into the shared custom-tool/MCP backend base

⚡ Fast-Iteration Config Updates

  • Fast-iteration examples now default to local command execution
  • fast_iteration.yaml refreshes its default pairings for current Gemini + Codex workflows
  • Antigravity fast-iteration config remains available for CLI-backed Google runs

🧪 Tests

  • massgen/tests/test_discriminative_pruning.py
  • massgen/tests/test_criterion_feedback.py
  • massgen/tests/test_position_bias_calibration.py
  • massgen/tests/test_score_utils.py
  • Updated massgen/tests/test_checklist_tools_server.py

📖 Getting Started

  • Quick Start Guide
  • Install:
    pip install massgen==0.1.90
  • Try It:
    uv run massgen --config massgen/configs/features/fast_iteration.yaml "Create an svg of an AI agent coding."

What's Changed

Full Changelog: v0.1.89...v0.1.90

v0.1.89

22 May 17:58
dc4ef69

Choose a tag to compare

🚀 Release Highlights — v0.1.89 (2026-05-22)

v0.1.89 completes the follow-up Antigravity CLI integration pass after v0.1.88 introduced the first backend. This release focuses on reliability in real MassGen coordination runs: workflow-tool parity, auth checks, workspace write isolation, native hooks, and prompt affordance gating.

🛰️ Workflow-Mode Parity

  • Antigravity now mirrors Gemini CLI's new_answer / vote workflow handling
  • vote is hidden when no candidate answers exist, keeping agents in new_answer_only mode
  • Post-evaluation prompts guard against stale new_answer, vote, or stop calls
  • Duplicate parsed workflow calls are suppressed within a single turn

🧰 Workspace Write Reliability

  • --add-dir <cwd> registers the MassGen workspace with agy so file tools write where peers and snapshots can see outputs
  • Workspace-root .antigravitycli/ marker prevents agy's upward project discovery from adopting a parent project
  • .antigravity/ and .antigravitycli/ are ignored as runtime artifacts

🔐 Auth + Binary Health Checks

  • Backend construction now verifies agy --version
  • Runs fail fast when no GEMINI_API_KEY, GOOGLE_API_KEY, or cached Google OAuth credentials are available
  • Docker mode still requires API-key auth because OAuth state does not cross container boundaries

🔌 Native Hooks

  • Antigravity hooks now emit standalone hooks.json
  • settings.json enables hooks through enableJsonHooks
  • Native hook adapter docs now reflect Antigravity's storage model rather than Gemini CLI's embedded settings hook model

🧭 Prompt Guardrails

  • TaskContextSection advertises spawn_subagents only when subagents are enabled
  • Multimodal-only agents keep read_media context guidance without phantom subagent MCP affordances

🧪 Tests

  • massgen/tests/test_antigravity_cli_backend.py expanded to cover health checks, authentication, workspace anchoring, --add-dir, hooks.json, workflow filtering, duplicate tool-call suppression, multimodal prompt flattening, cancellation cleanup, and agent-id propagation
  • massgen/tests/test_system_prompt_sections.py covers subagent affordance gating

📖 Getting Started

  • Quick Start Guide
  • Install:
    pip install massgen==0.1.89
    curl -fsSL https://antigravity.google/cli/install.sh | bash
  • Try It:
    uv run massgen --config massgen/configs/features/fast_iteration_gemini_antigravity.yaml "Create an svg of an AI agent coding."

What's Changed

Full Changelog: v0.1.88...v0.1.89

v0.1.88

20 May 18:04
695be50

Choose a tag to compare

🚀 Release Highlights — v0.1.88 (2026-05-20)

This is the first version of MassGen's Antigravity integration. v0.1.88 establishes the backend, workspace-local config isolation, MCP config translation, native hook adapter support, and runnable examples. We plan to complete the full integration in the next release.

🛰️ Antigravity CLI Backend

  • New backend type (#1097): antigravity_cli wraps Google's agy binary as a MassGen backend
  • Auth support: local mode can use existing Google OAuth state at ~/.gemini/google_accounts.json; GEMINI_API_KEY / GOOGLE_API_KEY are passed through when present
  • Server-side model selection: agy selects the active model per Antigravity tier; MassGen accepts model for logging/registry consistency but does not pass a nonexistent --model flag

🧰 Workspace-Local Isolation

  • Antigravity project state is routed through <workspace>/.antigravity via --gemini_dir
  • MCP config and settings stay inside the MassGen workspace, avoiding mutation of the user's global ~/.gemini/ config
  • .antigravity / .antigravitycli metadata directories are excluded from snapshot meaningful-content heuristics

🔌 MCP + Hook Integration

  • MassGen MCP server entries are translated to Antigravity's mcp_config.json schema
  • HTTP MCP servers emit serverUrl; stdio servers emit command / args / env
  • AntigravityCLINativeHookAdapter reuses Gemini CLI hook behavior for Antigravity's compatible hook protocol

📦 New Example Configs

  • massgen/configs/providers/antigravity/antigravity_cli_local.yaml — single Antigravity CLI agent
  • massgen/configs/features/fast_iteration_gemini_antigravity.yaml — Gemini API + Antigravity CLI fast-iteration pair

🧪 Tests

  • massgen/tests/test_antigravity_cli_backend.py covers binary discovery, command construction, workspace-local config, MCP schema, provider metadata, stdout/error streaming, workflow JSON envelopes, Docker/API-key constraints, native hook adapter wiring, and environment passthrough

📖 Getting Started

  • Quick Start Guide
  • Install:
    pip install massgen==0.1.88
    curl -fsSL https://antigravity.google/cli/install.sh | bash
  • Try It:
    uv run massgen --config massgen/configs/features/fast_iteration_gemini_antigravity.yaml "Create an svg of an AI agent coding."

What's Changed

Full Changelog: v0.1.87...v0.1.88

v0.1.87

15 May 17:00
cccc43d

Choose a tag to compare

🚀 Release Highlights — v0.1.87 (2026-05-15)

📚 Framework Comparison Pages

  • Three new "MassGen vs ..." pages (#1094): crewai.rst, langgraph.rst, autogen.rst under docs/source/reference/comparisons/ — each positions MassGen's parallel-refinement-with-voting model against the target framework's coordination shape and lists when to reach for one versus the other
  • Docs landing page update (#1094): "How Does MassGen Compare?" now lists all four comparisons (LLM Council + the three new ones); parent comparisons.rst drops "coming soon" and gains a toctree

🤖 llms.txt for AI Agents

  • Curated index (#1094): docs/source/_extra/llms.txt published at the docs site root via Sphinx html_extra_path, following the llmstxt.org spec
  • Full-corpus dump (#1094): llms-full.txt (~1 MB, 59 files) generated by a Sphinx build-finished hook in docs/source/conf.py
  • README pointer: One-line pointer in README.md / README_PYPI.md directing AI agents and crawlers to llms.txt / llms-full.txt

🔧 bootstrap_subagent Single-Shot Fix

  • refine=False (#1094): Orchestrator._run_bootstrap_discriminator_step now passes refine=False to SubagentManager.spawn_subagent. Without it, the orchestrator's max_new_answers_per_agent: 3 default shadowed the coordination-dict overrides and let the discriminator refine instead of running single-shot. Found via live log inspection
  • Test (#1094): massgen/tests/test_bootstrap_criteria.py asserts discriminator must pass refine=False to spawn_subagent for single-shot

✅ Issues Closed

  • #1082 — publish llms.txt + llms-full.txt at docs.massgen.ai
  • #1083 — add MassGen vs CrewAI / LangGraph / AutoGen comparison pages

📖 Getting Started

What's Changed

Full Changelog: v0.1.86...v0.1.87

v0.1.86

13 May 17:22
8bfc908

Choose a tag to compare

🚀 Release Highlights — v0.1.86 (2026-05-13)

🧠 bootstrap_subagent Discriminator Is Now Functional

  • orchestrator.coordination.criteria_mode: bootstrap_subagent now runs a between-rounds LLM critic via SubagentManager
  • The critic reads the task and each agent's latest answer, emits proposed_criteria as JSON, and the orchestrator merges them into bootstrap_criteria_accumulator.json
  • The next round's checklist is augmented automatically, giving the same end state as bootstrap_inline but with criteria sourced from a dedicated critic rather than the answering agents
  • The discriminator runs once per unique answer snapshot so unchanged rounds are not re-critiqued

🧹 Session-End Criteria Drain

  • Orchestrator._drain_at_session_end forces one final drain before final presentation
  • Late stdio JSONL emissions are captured instead of being stranded after the last checklist resolution pass

🛠️ Codex MCP Approval Fix

  • codex exec workspaces now get both non-interactive approval bypasses:
    • approval_policy = "never"
    • Per-MCP-server default_tools_approval_mode = "approve"
  • This prevents external MCP tools such as submit_checklist, create_task_plan, new_answer, and read_media from failing immediately with "user cancelled MCP tool call"

🧪 Tests

  • massgen/tests/test_bootstrap_criteria.py expanded to 35 tests for discriminator behavior and session-end drain
  • massgen/tests/test_codex_native_hook_adapter.py::TestCodexWorkspaceApprovalPolicy covers Codex approval config across modes

📖 Getting Started

  • Quick Start Guide
  • Try It:
    pip install massgen==0.1.86
    uv run massgen --config massgen/configs/coordination/bootstrap_subagent_criteria.yaml "Create an SVG of an AI agent coding."
  • Inspect emerging criteria at .massgen/massgen_logs/<session>/bootstrap_criteria_accumulator.json

What's Changed

Full Changelog: v0.1.85...v0.1.86

v0.1.85

11 May 17:04
1ba8f26

Choose a tag to compare

🚀 Release Highlights — v0.1.85 (2026-05-11)

⚠️ First-stage release — still maturing. Expect further finalization and more thorough end-to-end testing in v0.1.86.

🧪 Discriminative Criteria Emergence (criteria_mode)

  • bootstrap_inline variant (fully functional): New orchestrator.coordination.criteria_mode: bootstrap_inline makes each agent emit a short proposed_criteria list alongside its submit_checklist call — criteria a stronger answer would satisfy that the current answers do not. Proposals are deduped, FIFO-capped (bootstrap_max_total, default 30), persisted to bootstrap_criteria_accumulator.json, and merged into the next round's checklist via the existing EvaluationSection
  • All backends with checklist tool support: SDK path (Claude Code) gets the field directly in the in-process tool schema; stdio backends (gemini, codex, response, chat_completions, claude, grok) get a JSONL emission channel — proposed_criteria.jsonl next to checklist specs, drained by the orchestrator each pass
  • bootstrap_subagent variant (wired, LLM step deferred): Same accumulator pipeline; in-process LLM discriminator pass queued for v0.1.86
  • New module massgen/bootstrap_criteria.py with merge_proposals, augment_with_accumulator, is_bootstrap_mode, validate_criteria_mode
  • Config fields: CoordinationConfig.{criteria_mode, bootstrap_max_per_agent_per_round, bootstrap_max_total}

🛡️ Anti-Goodhart by Construction

  • Criteria come from observed gaps, not priors that may not match the task
  • Removes cold-start friction: users no longer need to pre-author criteria for new tasks — the first round produces both answers and the criteria the second round must rise to

📦 New Example Configs

  • massgen/configs/coordination/bootstrap_inline_criteria.yaml — fully functional variant
  • massgen/configs/coordination/bootstrap_subagent_criteria.yaml — accumulator wired, LLM step in v0.1.86

🧪 Tests

  • 30 new tests in massgen/tests/test_bootstrap_criteria.py (476 lines) covering merge/dedup/cap, config validation, AgentState.criteria_proposals, augmentation across criteria sources, rendering gating, and round-N → round-N+1 propagation end-to-end

📖 Getting Started

  • Quick Start Guide
  • Try It:
    pip install massgen==0.1.85
    uv run massgen --config massgen/configs/coordination/bootstrap_inline_criteria.yaml "Create an SVG of an AI agent coding."
  • Inspect the emerging criteria at .massgen/massgen_logs/<session>/bootstrap_criteria_accumulator.json

What's Changed

Full Changelog: v0.1.84...v0.1.85