meridian-cli 0.2.18__tar.gz → 0.2.20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/PKG-INFO +1 -1
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/__init__.py +1 -1
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/main.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/primary_launch.py +1 -11
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/.context/CONTEXT.md +14 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/AGENTS.md +12 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/settings.py +38 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/.context/CONTEXT.md +24 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/AGENTS.md +8 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/adapter.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/claude.py +5 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/codex.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/cursor.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/opencode.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/codex.py +5 -1
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/pi.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_claude.py +5 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_codex_streaming.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_codex_subprocess.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_cursor.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_opencode_streaming.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_opencode_subprocess.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_pi_native_tui.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_pi_rpc.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/AGENTS.md +6 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/__init__.py +37 -13
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/context.py +81 -2
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/cwd.py +5 -1
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/launch_types.py +1 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/plan.py +8 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/request.py +1 -0
- meridian_cli-0.2.20/src/meridian/lib/launch/resolution.py +117 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/context_ref.py +11 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/prepare.py +19 -41
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/work_store.py +10 -2
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/.gitignore +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/LICENSE +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/README.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/pyproject.toml +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/ag_ui/__init__.pyi +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/ag_ui/core.pyi +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/__main__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/_cmd_utils.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/agent_help.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/app_tree.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/argv_normalization.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/bootstrap.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/bootstrap_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/chat_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/config_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/doctor_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/entrypoint.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/ext_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/ext_registration.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/hooks_authority.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/hooks_commands.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/kg_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/mars_passthrough.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/mermaid_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/migrate_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/misc_commands.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/models_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/output.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/qi_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/report_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/session_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/spawn.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/spawn_inject.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/catalog.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/classify.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/cyclopts_app.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/help.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/lazy_dispatch.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/startup/policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/streaming_serve.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/sync_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/telemetry_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/utils.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/work_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/cli/workspace_cmd.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/dev/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/dev/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/dev/pytests.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/config.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/project_state.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/runtime_state.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/bootstrap/services.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/agent.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/bootstrap.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/catalog_session.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/model_aliases.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/models.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/catalog/skill.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/backend_acquisition.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/backend_handle.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/checkpoint.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/command_handler.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/command_invariants.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/commands.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/discovery.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/launcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/portless.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/raw_vite.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/dev_frontend/supervisor.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/event_index.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/event_log.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/event_observer.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/event_pipeline.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/frontend.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/claude.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/codex.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/common.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/opencode.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/normalization/synthetic.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/protocol.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/recovery.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/replay.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/runtime.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/server.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/session_service.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/chat/ws_fanout.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/catalog.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/context_config.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/preserving_edit.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/project_config_state.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/project_paths.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/project_root.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/schema.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/config/workspace.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/context/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/context/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/context/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/context/resolver.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/child_env.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/clock.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/codec.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/command_strings.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/context.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/conversation.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/depth.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/domain.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/execution_policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/formatting.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/launch_policy_snapshot.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/lifecycle.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/logging.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/overrides.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/process_cleanup.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/resolved_context.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/sink.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/spawn_lifecycle.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/spawn_service.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/spawn_start.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/telemetry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/core/util.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/diagnostics.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/biomed.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/mermaid.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/sessions.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/commands/workbench.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/context.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/descriptors.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/dispatcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/first_party.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/observability.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/extensions/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/bundle.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/claude_preflight.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/claude_utils.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/codex_rollout.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/common.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/claude_ws.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/codex_ws.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/cursor_subprocess.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/errors.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/opencode_http.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/connections/pi_rpc.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/control_action.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/cost.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/errors.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractor.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/claude.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/codex.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/cursor.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/opencode.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/extractors/pi.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/launch_spec.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/launch_types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/opencode_storage.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/opencode_transcript.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/claude.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/opencode.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/passthrough/registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/permission_broker.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/pi_lifecycle_events.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/pi_paths.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/pi_runtime_resolver.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/_guards.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/permission_flags.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/pi_extension_projection.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_codex_common.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/projection_errors.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/semantics.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/session_detection.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/transcript.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/autosync_store.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin/git_autosync.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/builtin_registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/config.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/dispatch.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/interval.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/registry.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/runner.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/hooks/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ignores.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/graph.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/report.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/serializer.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/kg/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/artifact_io.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/bundle_adapter.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/claude_session_access.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/command.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/compiler.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/composition.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/composition_spawn.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/constants.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/env.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/errors.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/extract.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/fork.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/materialize.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/permissions.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/policies.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/policy_snapshot.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/ports.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/primary_attach.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/pty_launcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/runner.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/session.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/subprocess_launcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/process/windows_launcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/prompt.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/reference.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/report.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/resolve.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/run_inputs.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/runner_helpers.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/session_scope.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/signals.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming/heartbeat.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming/terminal_arbitrator.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/streaming_runner.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/text_utils.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/workspace.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/workspace_projection.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/launch/written_files.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/markdown/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/markdown/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/markdown/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/markdown/extract.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/markdown/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/report.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/scanner.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/serializer.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/bare_end.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/fill_no_color.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/line_map.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/ox_edge.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/preprocess.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/suppression.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/style/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/mermaid/validator.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/observability/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/observability/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/observability/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/observability/debug_tracer.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/observability/trace_helpers.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/catalog.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/commands.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/config.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/config_surface.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/context.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/diag.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/hooks.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/init_ops.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/mars.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/migration.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/pruning.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/qi.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/reference.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/reference_recovery.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/report.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/runtime.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_corpus.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_export.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_log.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_log_render.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_render.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_repair.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_search.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_target.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/session_transcript.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/api.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/execute.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/execute_bg.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/execute_init.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/execute_runner.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/execute_session.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/failure_policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/models.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/spawn/query.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/sync_conflicts.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/work_attachment.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/work_dashboard.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/work_lifecycle.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/work_sessions.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/ops/workspace.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/locking.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/base.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/fallback.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/posix.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/process_scope/windows_job.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/terminate.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/unix_modules.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/platform/windows_job.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/budget.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/guardrails.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/permissions.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/safety/redaction.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/service_context.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/spawn/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/spawn/archive.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/artifact_store.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/atomic.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/event_store.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/history.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/launch_boundary.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/liveness.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/managed_primary.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/paths.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/primary_meta.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/process_scope_projection.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/reaper.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/runtime_root.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/session_store.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/model.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/repository.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/terminal_policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn/transitions.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/spawn_store.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/user_paths.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/wordgen.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/state/wordlists.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/control_socket.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/disk_watcher.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/drain_policy.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/drain_wait.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/event_observers.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/heartbeat.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/pi_drain.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/pi_process_cleanup.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/pi_quiescence.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/pi_subspawn_tracker.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/signal_canceller.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/spawn_dispatch.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/spawn_drain_loop.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/spawn_manager.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/spawn_session.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/streaming/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/bootstrap.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/correlation.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/events.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/init.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/local_jsonl.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/maintenance.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/observer.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/observers.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/query.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/reader.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/retention.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/router.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/sinks.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/telemetry/status.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/tools.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/utils/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/utils/time.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/README.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/dist/extensions/managed-bash/index.js +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/dist/extensions/meridian-spawn-watch/index.js +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/managed-bash/bundle.smoke.test.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_log_store.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_runtime.test.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_runtime.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/managed-bash/src/index.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/meridian-spawn-watch/bundle.smoke.test.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/meridian-spawn-watch/src/index.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/ids.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/json_file.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/log_overlay.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/meridian_cli.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/meridian_spawn.test.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/meridian_spawn.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/pi_harness_profile.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/pi_state_paths.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/schemas.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/selectable_panel.test.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/selectable_panel.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/extensions/shared/ui.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/package.json +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/pnpm-lock.yaml +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/pnpm-workspace.yaml +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/scripts/verify-extensions-loop.mjs +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/pi_runtime/vitest.config.ts +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/config.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/fs.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/git.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/state.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/plugin_api/types.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/py.typed +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/server/AGENTS.md +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/server/__init__.py +0 -0
- {meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/server/main.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meridian-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.20
|
|
4
4
|
Summary: Orchestrate CLI + MCP server for multi-model agent workflows
|
|
5
5
|
Project-URL: Homepage, https://github.com/haowjy/meridian-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/haowjy/meridian-cli
|
|
@@ -14,11 +14,9 @@ from meridian.lib.core.util import FormatContext
|
|
|
14
14
|
from meridian.lib.harness.registry import get_default_harness_registry
|
|
15
15
|
from meridian.lib.launch import LaunchRequest, SessionMode, launch_primary
|
|
16
16
|
from meridian.lib.launch.composition import PromptDocument
|
|
17
|
-
from meridian.lib.launch.reference import validate_reference_paths
|
|
18
17
|
from meridian.lib.launch.request import SessionRequest
|
|
19
18
|
from meridian.lib.ops.reference import resolve_session_reference
|
|
20
19
|
from meridian.lib.ops.spawn.models import normalize_goal
|
|
21
|
-
from meridian.lib.state.paths import resolve_kb_dir
|
|
22
20
|
|
|
23
21
|
|
|
24
22
|
class PrimaryLaunchOutput(BaseModel):
|
|
@@ -314,14 +312,6 @@ def run_primary_launch(
|
|
|
314
312
|
if requested_work_id is None and resolved_fork.source_work_id is not None:
|
|
315
313
|
requested_work_id = resolved_fork.source_work_id
|
|
316
314
|
|
|
317
|
-
validated_reference_files = tuple(
|
|
318
|
-
path.as_posix()
|
|
319
|
-
for path in validate_reference_paths(
|
|
320
|
-
reference_files,
|
|
321
|
-
reference_anchor=project_root,
|
|
322
|
-
kb_dir=resolve_kb_dir(project_root),
|
|
323
|
-
)
|
|
324
|
-
)
|
|
325
315
|
resolved_goal = normalize_goal(goal)
|
|
326
316
|
|
|
327
317
|
launch_result = launch_primary(
|
|
@@ -341,7 +331,7 @@ def run_primary_launch(
|
|
|
341
331
|
supplemental_prompt_documents=supplemental_prompt_documents,
|
|
342
332
|
include_bootstrap_documents=include_bootstrap_documents,
|
|
343
333
|
context_from=fork_resolution.resolved_context_from,
|
|
344
|
-
reference_files=
|
|
334
|
+
reference_files=reference_files,
|
|
345
335
|
prompt=prompt,
|
|
346
336
|
skills=skills,
|
|
347
337
|
goal=resolved_goal,
|
|
@@ -104,6 +104,20 @@ For `replace`, the entire section from the higher-precedence file wins.
|
|
|
104
104
|
use `structlog` here. The launch diagnostic boundary (`capture_library_diagnostics()`)
|
|
105
105
|
captures stdlib warnings during spawn; structlog bypasses it and leaks to stderr.
|
|
106
106
|
|
|
107
|
+
## Launch-Time Harness Profile Resolution
|
|
108
|
+
|
|
109
|
+
Some harness profile fields are resolved at launch time rather than at config load
|
|
110
|
+
time. These follow the same pattern: ambient config snapshot → launch-time env override:
|
|
111
|
+
|
|
112
|
+
- `resolve_pi_harness_profile_for_launch()` — resolves `[harness.pi]` (managed bash,
|
|
113
|
+
load_all_extensions, background_tasks, spawn_watch)
|
|
114
|
+
- `resolve_claude_allow_builtin_agents_for_launch()` — resolves
|
|
115
|
+
`[harness.claude] allow_builtin_agents` from the launch config snapshot, falling
|
|
116
|
+
back to `load_config()` if the snapshot is absent or invalid
|
|
117
|
+
|
|
118
|
+
Both are called from `bind_launch_context()` in `lib/launch/context.py` and threaded
|
|
119
|
+
into the harness adapter's `resolve_launch_spec()`.
|
|
120
|
+
|
|
107
121
|
## Schema Metadata (`schema.py`)
|
|
108
122
|
|
|
109
123
|
`config_field(canonical_key, value_kind=..., file_aliases=..., env_vars=...)` attaches
|
|
@@ -62,6 +62,18 @@ and formatting. Use `preserving_edit.py` when editing config programmatically.
|
|
|
62
62
|
- `context_config.py` — `ContextConfig`, `ContextSourceType`: context path schema
|
|
63
63
|
- `catalog.py` — `build_option_catalog()`: introspects `MeridianConfig` for CLI/docs
|
|
64
64
|
|
|
65
|
+
### Harness Profile Config Settings
|
|
66
|
+
|
|
67
|
+
Per-harness profile configs under `HarnessConfig` expose TOML-settable fields. The
|
|
68
|
+
Claude profile includes:
|
|
69
|
+
|
|
70
|
+
- `[harness.claude] model` — default model (string, env: `MERIDIAN_HARNESS_MODEL_CLAUDE`)
|
|
71
|
+
- `[harness.claude] wait_yield_seconds` — polling interval (float, env:
|
|
72
|
+
`MERIDIAN_HARNESS_WAIT_YIELD_SECONDS_CLAUDE`)
|
|
73
|
+
- `[harness.claude] allow_builtin_agents` — whether to permit Claude's built-in
|
|
74
|
+
subagents (Explore, Plan, general-purpose). Default `false` — Meridian denies them
|
|
75
|
+
so sessions use custom Meridian agents exclusively. Set `true` to opt out.
|
|
76
|
+
|
|
65
77
|
## Depth
|
|
66
78
|
|
|
67
79
|
→ [.context/CONTEXT.md](.context/CONTEXT.md) — ContextVar thread-local pattern,
|
|
@@ -345,6 +345,15 @@ def _normalize_harness_table(
|
|
|
345
345
|
)
|
|
346
346
|
harness_values["wait_yield_seconds"] = float(harness_value)
|
|
347
347
|
continue
|
|
348
|
+
if key == "claude" and harness_key == "allow_builtin_agents":
|
|
349
|
+
if not isinstance(harness_value, bool):
|
|
350
|
+
raise ValueError(
|
|
351
|
+
f"Invalid value for '{source}.{key}.allow_builtin_agents': "
|
|
352
|
+
f"expected bool, got "
|
|
353
|
+
f"{type(harness_value).__name__} ({harness_value!r})."
|
|
354
|
+
)
|
|
355
|
+
harness_values["allow_builtin_agents"] = harness_value
|
|
356
|
+
continue
|
|
348
357
|
if key == "pi" and harness_key == "disable_managed_bash":
|
|
349
358
|
if not isinstance(harness_value, bool):
|
|
350
359
|
raise ValueError(
|
|
@@ -425,6 +434,9 @@ def _normalize_spawn_table(raw_value: object, *, source: str) -> dict[str, objec
|
|
|
425
434
|
|
|
426
435
|
values: dict[str, object] = {}
|
|
427
436
|
for key, value in cast("dict[str, object]", raw_value).items():
|
|
437
|
+
if key == "deny_headless_harnesses":
|
|
438
|
+
values[key] = _parse_toml_list(raw_value=value, source=f"{source}.{key}")
|
|
439
|
+
continue
|
|
428
440
|
if key not in {"default_wait_yield_seconds", "min_wait_yield_seconds"}:
|
|
429
441
|
logger.warning("Ignoring unknown Meridian config key '%s.%s'.", source, key)
|
|
430
442
|
continue
|
|
@@ -1154,6 +1166,7 @@ class HarnessProfileConfig(BaseModel):
|
|
|
1154
1166
|
|
|
1155
1167
|
|
|
1156
1168
|
class ClaudeHarnessProfileConfig(HarnessProfileConfig):
|
|
1169
|
+
allow_builtin_agents: bool = False
|
|
1157
1170
|
model: Annotated[
|
|
1158
1171
|
str,
|
|
1159
1172
|
config_field(
|
|
@@ -1354,6 +1367,14 @@ class MeridianConfig(BaseSettings):
|
|
|
1354
1367
|
env_vars=("MERIDIAN_MIN_WAIT_YIELD_SECONDS",),
|
|
1355
1368
|
),
|
|
1356
1369
|
] = 30.0
|
|
1370
|
+
deny_headless_harnesses: Annotated[
|
|
1371
|
+
tuple[str, ...],
|
|
1372
|
+
config_field(
|
|
1373
|
+
"spawn.deny_headless_harnesses",
|
|
1374
|
+
value_kind="str_list",
|
|
1375
|
+
file_aliases=(file_alias("spawn", "deny_headless_harnesses"),),
|
|
1376
|
+
),
|
|
1377
|
+
] = ()
|
|
1357
1378
|
harness: HarnessConfig = Field(default_factory=HarnessConfig)
|
|
1358
1379
|
primary: PrimaryConfig = Field(default_factory=PrimaryConfig)
|
|
1359
1380
|
output: OutputConfig = Field(default_factory=OutputConfig)
|
|
@@ -1560,6 +1581,23 @@ def resolve_pi_harness_profile_for_launch(
|
|
|
1560
1581
|
)
|
|
1561
1582
|
|
|
1562
1583
|
|
|
1584
|
+
def resolve_claude_allow_builtin_agents_for_launch(
|
|
1585
|
+
*,
|
|
1586
|
+
config_snapshot: dict[str, object] | None,
|
|
1587
|
+
project_root: Path,
|
|
1588
|
+
) -> bool:
|
|
1589
|
+
"""Resolve ``[harness.claude].allow_builtin_agents`` from a launch config snapshot."""
|
|
1590
|
+
|
|
1591
|
+
if config_snapshot:
|
|
1592
|
+
try:
|
|
1593
|
+
return bool(
|
|
1594
|
+
MeridianConfig.model_validate(config_snapshot).harness.claude.allow_builtin_agents
|
|
1595
|
+
)
|
|
1596
|
+
except Exception:
|
|
1597
|
+
pass
|
|
1598
|
+
return bool(load_config(project_root).harness.claude.allow_builtin_agents)
|
|
1599
|
+
|
|
1600
|
+
|
|
1563
1601
|
def resolve_pi_disable_managed_bash() -> bool:
|
|
1564
1602
|
"""Resolve whether Meridian should skip Pi's managed bash extension."""
|
|
1565
1603
|
|
|
@@ -38,6 +38,10 @@ for streaming app server and `meridian chat`.
|
|
|
38
38
|
Per-harness mapping:
|
|
39
39
|
- Claude subprocess: `claude -p --output-format stream-json --verbose -`
|
|
40
40
|
- Claude connection: `claude -p --input-format stream-json --output-format stream-json --verbose` (stdin/stdout NDJSON, not WebSocket despite `claude_ws.py` name)
|
|
41
|
+
- **Claude built-in agent denial**: Meridian injects `--disallowedTools
|
|
42
|
+
Agent(Explore),Agent(Plan),Agent(general-purpose)` by default. Gated by
|
|
43
|
+
`[harness.claude] allow_builtin_agents` (bool, default `false`). The denials
|
|
44
|
+
merge into permission-derived `--disallowedTools` via `dedupe_nonempty()`.
|
|
41
45
|
- Codex subprocess: `codex exec --json`; connection: `codex app-server` (real WebSocket, JSON-RPC 2.0)
|
|
42
46
|
- OpenCode subprocess: `opencode run`; connection: `opencode serve` (HTTP+SSE)
|
|
43
47
|
- Cursor subprocess: `cursor agent <prompt>` (stdout NDJSON, no connection path — subprocess-only)
|
|
@@ -184,6 +188,26 @@ it's captured. This is the minimum-intrusive mechanism for an otherwise unobserv
|
|
|
184
188
|
value. Windows does not support PTY — Claude primary uses a fallback detection path
|
|
185
189
|
(`session_detection.py`) on Windows.
|
|
186
190
|
|
|
191
|
+
### Claude: Built-in Subagent Denial
|
|
192
|
+
|
|
193
|
+
Claude Code ships with three built-in subagents: Explore, Plan, and general-purpose.
|
|
194
|
+
These conflict with Meridian's own agent system. Meridian injects
|
|
195
|
+
`--disallowedTools Agent(Explore),Agent(Plan),Agent(general-purpose)` by default
|
|
196
|
+
so Claude sessions use custom Meridian agents exclusively. The behavior is gated by
|
|
197
|
+
`[harness.claude] allow_builtin_agents` (bool, default `false`).
|
|
198
|
+
|
|
199
|
+
The flag is resolved in `bind_launch_context()` via
|
|
200
|
+
`resolve_claude_allow_builtin_agents_for_launch()`, threaded through
|
|
201
|
+
`SpawnParams.claude_allow_builtin_agents` → `ResolvedLaunchSpec.disallowed_tools`,
|
|
202
|
+
and projected by `project_claude.py`. The builtin denials merge into
|
|
203
|
+
permission-derived `--disallowedTools` so exactly one flag is emitted.
|
|
204
|
+
|
|
205
|
+
This is implemented as a Meridian platform policy (harness adapter injection),
|
|
206
|
+
not as a per-agent `disallowed-tools` field. This means individual agent profiles
|
|
207
|
+
no longer need to carry deny entries like
|
|
208
|
+
`disallowed-tools: [Agent(Explore), Agent(Plan), Agent(general-purpose)]` —
|
|
209
|
+
they're inherited from the harness adapter.
|
|
210
|
+
|
|
187
211
|
### Claude: System-Prompt File Channel
|
|
188
212
|
|
|
189
213
|
`--append-system-prompt-file <path>` avoids `ARG_MAX` limits when skills and profile
|
|
@@ -37,6 +37,12 @@ streaming and `meridian chat`.
|
|
|
37
37
|
Per-harness commands:
|
|
38
38
|
- Claude subprocess: `claude -p --output-format stream-json --verbose -`
|
|
39
39
|
- Claude connection: stdin/stdout NDJSON (not WebSocket despite `claude_ws.py` name)
|
|
40
|
+
- **Claude built-in agent denial**: Meridian injects
|
|
41
|
+
`--disallowedTools Agent(Explore),Agent(Plan),Agent(general-purpose)` by default
|
|
42
|
+
so sessions use custom Meridian agents instead of Claude's built-in subagents.
|
|
43
|
+
Gated by `[harness.claude] allow_builtin_agents` (bool, default `false`).
|
|
44
|
+
The builtin denials merge into permission-derived `--disallowedTools` via
|
|
45
|
+
`dedupe_nonempty()` so exactly one flag is emitted.
|
|
40
46
|
- Codex subprocess: `codex exec --json`; connection: `codex app-server` (real WebSocket, JSON-RPC 2.0)
|
|
41
47
|
- OpenCode subprocess: `opencode run`; connection: `opencode serve` (HTTP+SSE)
|
|
42
48
|
- Cursor subprocess: `cursor agent <prompt>` (stdout NDJSON, no connection path — subprocess-only)
|
|
@@ -77,6 +83,8 @@ unique — always check `event.harness_id`. `turn/completed` is Codex; OpenCode
|
|
|
77
83
|
Source of truth for what every adapter must implement.
|
|
78
84
|
- `registry.py` — `HarnessRegistry`, `with_defaults()`. The global singleton.
|
|
79
85
|
- `claude.py` / `codex.py` / `opencode.py` / `cursor.py` — concrete adapter implementations.
|
|
86
|
+
Claude adapter now threads `claude_allow_builtin_agents` from config → SpawnParams →
|
|
87
|
+
`ResolvedLaunchSpec.disallowed_tools`, mirroring the `pi.disable_managed_bash` pattern.
|
|
80
88
|
- `__init__.py` — `HARNESS_EXTENSION_TOUCHPOINTS` and `ensure_bootstrap()`.
|
|
81
89
|
Read before adding a harness — lists every file that must be touched.
|
|
82
90
|
- `semantics.py` — `terminal_outcome()`, `activity_transition()`, `clears_signal()`.
|
|
@@ -237,6 +237,7 @@ class SpawnParams(BaseModel):
|
|
|
237
237
|
context_from_payload: tuple[str, ...] = ()
|
|
238
238
|
reference_items: tuple[Any, ...] = ()
|
|
239
239
|
pi_harness_profile: PiHarnessProfileConfig | None = None
|
|
240
|
+
claude_allow_builtin_agents: bool = False
|
|
240
241
|
|
|
241
242
|
|
|
242
243
|
class McpConfig(BaseModel):
|
|
@@ -265,6 +265,7 @@ class ClaudeAdapter(BaseHarnessAdapter[ResolvedLaunchSpec]):
|
|
|
265
265
|
"mcp_tools",
|
|
266
266
|
"projected_roots",
|
|
267
267
|
"user_turn_content",
|
|
268
|
+
"claude_allow_builtin_agents",
|
|
268
269
|
}
|
|
269
270
|
)
|
|
270
271
|
_EXPLICITLY_IGNORED_FIELDS: ClassVar[frozenset[str]] = frozenset(
|
|
@@ -374,6 +375,9 @@ class ClaudeAdapter(BaseHarnessAdapter[ResolvedLaunchSpec]):
|
|
|
374
375
|
prompt_file_path = str(Path(run.control_root) / "system-prompt.md")
|
|
375
376
|
# Extract user_turn_content from run params if available
|
|
376
377
|
user_turn_content = getattr(run, "user_turn_content", None)
|
|
378
|
+
disallowed_tools: tuple[str, ...] = ()
|
|
379
|
+
if not run.claude_allow_builtin_agents:
|
|
380
|
+
disallowed_tools = ("Agent(Explore),Agent(Plan),Agent(general-purpose)",)
|
|
377
381
|
return ResolvedLaunchSpec(
|
|
378
382
|
harness=HarnessId.CLAUDE,
|
|
379
383
|
model=str(run.model).strip() if run.model else None,
|
|
@@ -391,6 +395,7 @@ class ClaudeAdapter(BaseHarnessAdapter[ResolvedLaunchSpec]):
|
|
|
391
395
|
agent_name=run.agent,
|
|
392
396
|
prompt_file_path=prompt_file_path,
|
|
393
397
|
user_turn_content=user_turn_content,
|
|
398
|
+
disallowed_tools=disallowed_tools,
|
|
394
399
|
)
|
|
395
400
|
|
|
396
401
|
def preflight(
|
|
@@ -42,13 +42,16 @@ def _require_observer_endpoint_url(
|
|
|
42
42
|
def _build_codex_attach_command(
|
|
43
43
|
session_id: str,
|
|
44
44
|
ws_url: str,
|
|
45
|
+
prompt: str | None,
|
|
45
46
|
projected_roots: tuple[Path, ...],
|
|
46
47
|
) -> tuple[str, ...]:
|
|
47
|
-
"""Build `codex resume {session_id} --remote {ws_url}`."""
|
|
48
|
+
"""Build `codex resume {session_id} --remote {ws_url} [prompt]`."""
|
|
48
49
|
|
|
49
50
|
command = ["codex", "resume", session_id, "--remote", ws_url]
|
|
50
51
|
for root in projected_roots:
|
|
51
52
|
command.extend(("--add-dir", root.as_posix()))
|
|
53
|
+
if prompt and prompt.strip():
|
|
54
|
+
command.append(prompt)
|
|
52
55
|
return tuple(command)
|
|
53
56
|
|
|
54
57
|
|
|
@@ -85,6 +88,7 @@ class CodexPassthrough:
|
|
|
85
88
|
return lambda session_id: _build_codex_attach_command(
|
|
86
89
|
session_id=session_id,
|
|
87
90
|
ws_url=_require_observer_endpoint_url(connection, transport="ws"),
|
|
91
|
+
prompt=spec.user_turn_content,
|
|
88
92
|
projected_roots=spec.projected_roots,
|
|
89
93
|
)
|
|
90
94
|
|
{meridian_cli-0.2.18 → meridian_cli-0.2.20}/src/meridian/lib/harness/projections/project_claude.py
RENAMED
|
@@ -33,6 +33,7 @@ _PROJECTED_FIELDS: frozenset[str] = frozenset(
|
|
|
33
33
|
"prompt",
|
|
34
34
|
"prompt_file_path",
|
|
35
35
|
"user_turn_content",
|
|
36
|
+
"disallowed_tools",
|
|
36
37
|
}
|
|
37
38
|
)
|
|
38
39
|
|
|
@@ -179,6 +180,10 @@ def project_claude_spec_to_cli_args(
|
|
|
179
180
|
|
|
180
181
|
permission_flags = resolve_permission_flags(spec.permission_resolver, HarnessId.CLAUDE)
|
|
181
182
|
permission_tail, allowed_tools, disallowed_tools = _extract_claude_tool_flags(permission_flags)
|
|
183
|
+
spec_disallowed: list[str] = []
|
|
184
|
+
for entry in spec.disallowed_tools:
|
|
185
|
+
spec_disallowed.extend(split_csv_entries(entry))
|
|
186
|
+
disallowed_tools = dedupe_nonempty((*disallowed_tools, *spec_disallowed))
|
|
182
187
|
allowed_tools = dedupe_nonempty((*allowed_tools, *parent_allowed_tools))
|
|
183
188
|
command.extend(permission_tail)
|
|
184
189
|
if allowed_tools:
|
|
@@ -38,6 +38,12 @@ bind_launch_context() ← env, cwd, spec, argv, permissions
|
|
|
38
38
|
LaunchContext ← complete at construction; ready to run
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
Before callers enter this pipeline, they must resolve the shared launch-input
|
|
42
|
+
surface with `resolution.py:resolve_launch_inputs()`. That seam owns work
|
|
43
|
+
precedence, `--from` work inheritance, task cwd selection, reference anchoring,
|
|
44
|
+
and `-f` validation. Primary and spawn may differ in prompt/session projection,
|
|
45
|
+
but they should not hand-roll directory or reference resolution.
|
|
46
|
+
|
|
41
47
|
**Why the split?** The primary CLI path calls `bind_launch_context()` twice: once
|
|
42
48
|
with `dry_run=True` for `--dry-run` display, then again with real spawn ID and paths.
|
|
43
49
|
`prepare_launch_surface()` is expensive and safe to call once. `bind_launch_context()`
|
|
@@ -6,6 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
from typing import TYPE_CHECKING, Any
|
|
7
7
|
|
|
8
8
|
from meridian.lib.launch.launch_types import summarize_composition_warnings
|
|
9
|
+
from meridian.lib.launch.resolution import resolve_launch_inputs
|
|
9
10
|
from meridian.lib.state import work_store
|
|
10
11
|
from meridian.lib.state.paths import resolve_project_paths, resolve_work_scratch_dir_for_project
|
|
11
12
|
|
|
@@ -78,7 +79,9 @@ def launch_primary(
|
|
|
78
79
|
"""Launch the primary agent process and wait for exit."""
|
|
79
80
|
|
|
80
81
|
from meridian.lib.catalog.catalog_session import CatalogSession
|
|
82
|
+
from meridian.lib.config.project_root import resolve_project_root_resolution
|
|
81
83
|
from meridian.lib.core.context import resolve_runtime_context
|
|
84
|
+
from meridian.lib.ops.runtime import resolve_runtime_root_for_read
|
|
82
85
|
|
|
83
86
|
from .context import (
|
|
84
87
|
RuntimeBindings,
|
|
@@ -90,11 +93,31 @@ def launch_primary(
|
|
|
90
93
|
from .process import run_harness_process
|
|
91
94
|
from .types import LaunchResult
|
|
92
95
|
|
|
93
|
-
|
|
96
|
+
resolved_project_root = resolve_project_root_resolution(project_root).project_root
|
|
97
|
+
preview_work_id = _preview_work_id_for_launch(request)
|
|
98
|
+
runtime_root_for_context = resolve_runtime_root_for_read(resolved_project_root)
|
|
99
|
+
runtime_context = resolve_runtime_context(
|
|
100
|
+
project_root=resolved_project_root,
|
|
101
|
+
runtime_root=runtime_root_for_context,
|
|
102
|
+
)
|
|
103
|
+
ambient_work_id = None if preview_work_id is not None else runtime_context.work_id
|
|
104
|
+
project_state_dir = resolve_project_paths(resolved_project_root).root_dir
|
|
105
|
+
launch_resolution = resolve_launch_inputs(
|
|
106
|
+
authority_root=resolved_project_root,
|
|
107
|
+
project_state_dir=project_state_dir,
|
|
108
|
+
context_from=request.context_from,
|
|
109
|
+
reference_files=request.reference_files,
|
|
110
|
+
explicit_work_id=preview_work_id,
|
|
111
|
+
ambient_work_id=ambient_work_id,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
runtime = build_primary_launch_runtime(
|
|
115
|
+
project_root=resolved_project_root,
|
|
116
|
+
execution_cwd=resolved_project_root,
|
|
117
|
+
)
|
|
94
118
|
if request.include_bootstrap_documents:
|
|
95
119
|
from meridian.lib.catalog.bootstrap import BootstrapRegistry
|
|
96
120
|
|
|
97
|
-
resolved_project_root = Path(runtime.resolved_config_root)
|
|
98
121
|
request = request.model_copy(
|
|
99
122
|
update={
|
|
100
123
|
"supplemental_prompt_documents": (
|
|
@@ -106,23 +129,24 @@ def launch_primary(
|
|
|
106
129
|
resolved_work_id = (
|
|
107
130
|
_preview_work_id_for_launch(request)
|
|
108
131
|
if request.dry_run
|
|
109
|
-
else _resolve_work_id_for_launch(
|
|
132
|
+
else _resolve_work_id_for_launch(resolved_project_root, request)
|
|
110
133
|
)
|
|
111
134
|
|
|
112
|
-
|
|
113
|
-
|
|
135
|
+
runtime = runtime.model_copy(update=launch_resolution.runtime_updates)
|
|
136
|
+
effective_work_id = resolved_work_id or launch_resolution.effective_work_id
|
|
114
137
|
active_work_dir = (
|
|
115
138
|
resolve_work_scratch_dir_for_project(
|
|
116
139
|
resolved_project_root,
|
|
117
|
-
|
|
140
|
+
effective_work_id,
|
|
118
141
|
)
|
|
119
|
-
if
|
|
120
|
-
else
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
142
|
+
if effective_work_id is not None
|
|
143
|
+
else runtime_context.work_dir
|
|
144
|
+
)
|
|
145
|
+
request_updates = dict(launch_resolution.request_updates)
|
|
146
|
+
request_updates["work_id_hint"] = effective_work_id
|
|
147
|
+
spawn_request = build_primary_spawn_request(request=request).model_copy(
|
|
148
|
+
update=request_updates
|
|
124
149
|
)
|
|
125
|
-
spawn_request = build_primary_spawn_request(request=request)
|
|
126
150
|
prepared_policy = compile_prepared_policy_surface(
|
|
127
151
|
request=spawn_request,
|
|
128
152
|
runtime=runtime,
|
|
@@ -142,7 +166,7 @@ def launch_primary(
|
|
|
142
166
|
bindings=RuntimeBindings(
|
|
143
167
|
spawn_id="dry-run-primary",
|
|
144
168
|
report_output_path=Path(runtime.report_output_path or "report.md"),
|
|
145
|
-
runtime_work_id=
|
|
169
|
+
runtime_work_id=effective_work_id,
|
|
146
170
|
dry_run=True,
|
|
147
171
|
),
|
|
148
172
|
runtime=runtime,
|