meridian-cli 0.2.16__tar.gz → 0.2.18__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.16 → meridian_cli-0.2.18}/PKG-INFO +1 -1
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/__init__.py +1 -1
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/main.py +2 -1
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/.context/CONTEXT.md +1 -1
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/AGENTS.md +2 -2
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/.context/CONTEXT.md +56 -61
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/.context/CONTEXT.md +1 -1
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/.context/CONTEXT.md +28 -3
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/AGENTS.md +10 -3
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/__init__.py +4 -2
- meridian_cli-0.2.18/src/meridian/lib/streaming/disk_watcher.py +277 -0
- meridian_cli-0.2.18/src/meridian/lib/streaming/drain_wait.py +120 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/pi_drain.py +51 -368
- meridian_cli-0.2.18/src/meridian/lib/streaming/pi_process_cleanup.py +125 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/pi_quiescence.py +7 -0
- meridian_cli-0.2.18/src/meridian/lib/streaming/pi_subspawn_tracker.py +359 -0
- meridian_cli-0.2.18/src/meridian/lib/streaming/spawn_dispatch.py +93 -0
- meridian_cli-0.2.18/src/meridian/lib/streaming/spawn_drain_loop.py +341 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/spawn_manager.py +20 -506
- meridian_cli-0.2.18/src/meridian/lib/streaming/spawn_session.py +42 -0
- meridian_cli-0.2.18/src/meridian/pi_runtime/.context/CONTEXT.md +143 -0
- meridian_cli-0.2.18/src/meridian/pi_runtime/dist/extensions/managed-bash/index.js +1399 -0
- meridian_cli-0.2.18/src/meridian/pi_runtime/dist/extensions/meridian-spawn-watch/index.js +1211 -0
- meridian_cli-0.2.18/src/meridian/pi_runtime/pnpm-workspace.yaml +6 -0
- meridian_cli-0.2.16/src/meridian/lib/streaming/disk_watcher.py +0 -202
- meridian_cli-0.2.16/src/meridian/lib/streaming/inject_lock.py +0 -21
- meridian_cli-0.2.16/src/meridian/pi_runtime/.context/CONTEXT.md +0 -126
- meridian_cli-0.2.16/src/meridian/pi_runtime/pnpm-workspace.yaml +0 -4
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/.gitignore +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/LICENSE +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/README.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/pyproject.toml +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/ag_ui/__init__.pyi +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/ag_ui/core.pyi +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/__main__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/_cmd_utils.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/agent_help.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/app_tree.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/argv_normalization.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/bootstrap.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/bootstrap_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/chat_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/config_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/doctor_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/entrypoint.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/ext_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/ext_registration.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/hooks_authority.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/hooks_commands.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/kg_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/mars_passthrough.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/mermaid_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/migrate_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/misc_commands.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/models_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/output.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/primary_launch.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/qi_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/report_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/session_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/spawn.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/spawn_inject.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/catalog.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/classify.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/cyclopts_app.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/help.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/lazy_dispatch.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/startup/policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/streaming_serve.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/sync_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/telemetry_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/utils.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/work_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/cli/workspace_cmd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/dev/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/dev/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/dev/pytests.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/config.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/project_state.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/runtime_state.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/bootstrap/services.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/agent.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/bootstrap.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/catalog_session.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/model_aliases.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/models.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/catalog/skill.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/backend_acquisition.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/backend_handle.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/checkpoint.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/command_handler.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/command_invariants.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/commands.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/discovery.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/launcher.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/portless.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/raw_vite.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/dev_frontend/supervisor.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/event_index.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/event_log.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/event_observer.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/event_pipeline.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/frontend.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/claude.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/codex.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/common.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/opencode.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/normalization/synthetic.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/protocol.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/recovery.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/replay.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/runtime.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/server.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/session_service.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/chat/ws_fanout.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/catalog.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/context_config.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/preserving_edit.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/project_config_state.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/project_paths.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/project_root.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/schema.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/settings.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/config/workspace.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/context/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/context/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/context/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/context/resolver.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/child_env.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/clock.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/codec.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/command_strings.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/conversation.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/depth.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/domain.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/execution_policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/formatting.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/launch_policy_snapshot.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/lifecycle.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/logging.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/overrides.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/process_cleanup.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/resolved_context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/sink.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/spawn_lifecycle.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/spawn_service.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/spawn_start.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/telemetry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/core/util.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/diagnostics.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/biomed.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/mermaid.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/sessions.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/commands/workbench.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/descriptors.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/dispatcher.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/first_party.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/observability.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/extensions/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/adapter.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/bundle.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/claude.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/claude_preflight.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/claude_utils.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/codex.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/codex_rollout.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/common.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/claude_ws.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/codex_ws.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/cursor_subprocess.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/errors.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/opencode_http.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/pi_rpc.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/control_action.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/cost.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/cursor.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/errors.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractor.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/claude.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/codex.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/cursor.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/opencode.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/extractors/pi.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/launch_spec.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/launch_types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/opencode.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/opencode_storage.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/opencode_transcript.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/claude.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/codex.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/opencode.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/passthrough/registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/permission_broker.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/pi.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/pi_lifecycle_events.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/pi_paths.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/pi_runtime_resolver.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/_guards.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/permission_flags.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/pi_extension_projection.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_claude.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_codex_common.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_codex_streaming.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_codex_subprocess.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_cursor.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_opencode_streaming.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_opencode_subprocess.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_pi_native_tui.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/project_pi_rpc.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/projection_errors.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/semantics.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/session_detection.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/transcript.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/autosync_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin/git_autosync.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/builtin_registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/config.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/dispatch.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/interval.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/registry.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/runner.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/hooks/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ignores.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/graph.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/report.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/serializer.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/kg/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/artifact_io.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/bundle_adapter.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/claude_session_access.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/command.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/compiler.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/composition.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/composition_spawn.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/constants.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/cwd.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/env.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/errors.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/extract.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/fork.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/launch_types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/materialize.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/permissions.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/plan.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/policies.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/policy_snapshot.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/ports.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/primary_attach.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/pty_launcher.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/runner.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/session.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/subprocess_launcher.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/process/windows_launcher.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/prompt.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/reference.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/report.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/request.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/resolve.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/run_inputs.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/runner_helpers.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/session_scope.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/signals.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming/heartbeat.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming/terminal_arbitrator.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/streaming_runner.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/text_utils.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/workspace.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/workspace_projection.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/launch/written_files.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/markdown/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/markdown/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/markdown/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/markdown/extract.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/markdown/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/report.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/scanner.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/serializer.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/bare_end.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/fill_no_color.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/line_map.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/ox_edge.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/preprocess.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/suppression.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/style/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/mermaid/validator.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/observability/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/observability/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/observability/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/observability/debug_tracer.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/observability/trace_helpers.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/catalog.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/commands.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/config.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/config_surface.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/diag.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/hooks.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/init_ops.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/mars.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/migration.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/pruning.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/qi.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/reference.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/reference_recovery.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/report.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/runtime.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_corpus.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_export.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_log.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_log_render.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_render.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_repair.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_search.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_target.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/session_transcript.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/api.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/context_ref.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/execute.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/execute_bg.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/execute_init.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/execute_runner.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/execute_session.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/failure_policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/models.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/prepare.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/spawn/query.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/sync_conflicts.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/work_attachment.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/work_dashboard.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/work_lifecycle.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/work_sessions.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/ops/workspace.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/locking.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/base.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/fallback.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/posix.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/process_scope/windows_job.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/terminate.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/unix_modules.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/platform/windows_job.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/budget.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/guardrails.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/permissions.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/safety/redaction.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/service_context.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/spawn/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/spawn/archive.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/artifact_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/atomic.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/event_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/history.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/launch_boundary.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/liveness.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/managed_primary.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/paths.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/primary_meta.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/process_scope_projection.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/reaper.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/runtime_root.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/session_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/.context/CONTEXT.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/model.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/repository.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/terminal_policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn/transitions.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/spawn_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/user_paths.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/wordgen.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/wordlists.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/state/work_store.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/control_socket.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/drain_policy.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/event_observers.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/heartbeat.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/signal_canceller.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/streaming/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/bootstrap.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/correlation.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/events.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/init.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/local_jsonl.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/maintenance.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/observer.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/observers.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/query.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/reader.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/retention.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/router.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/sinks.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/telemetry/status.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/tools.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/utils/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/utils/time.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/README.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/managed-bash/bundle.smoke.test.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_log_store.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_runtime.test.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/managed-bash/src/bash_runtime.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/managed-bash/src/index.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/meridian-spawn-watch/bundle.smoke.test.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/meridian-spawn-watch/src/index.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/ids.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/json_file.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/log_overlay.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/meridian_cli.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/meridian_spawn.test.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/meridian_spawn.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/pi_harness_profile.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/pi_state_paths.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/schemas.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/selectable_panel.test.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/selectable_panel.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/extensions/shared/ui.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/package.json +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/pnpm-lock.yaml +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/scripts/verify-extensions-loop.mjs +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/pi_runtime/vitest.config.ts +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/config.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/fs.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/git.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/state.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/plugin_api/types.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/py.typed +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/server/AGENTS.md +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/server/__init__.py +0 -0
- {meridian_cli-0.2.16 → meridian_cli-0.2.18}/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.18
|
|
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
|
|
@@ -1117,7 +1117,8 @@ def main(argv: Sequence[str] | None = None) -> None:
|
|
|
1117
1117
|
|
|
1118
1118
|
if cleaned_args and cleaned_args[0] == "mars":
|
|
1119
1119
|
_emit_usage_command_invoked(cleaned_args)
|
|
1120
|
-
|
|
1120
|
+
with _directory_env_scope(options.project_root, options.directory_explicit):
|
|
1121
|
+
_run_mars_passthrough(cleaned_args[1:], output_format=options.output.format)
|
|
1121
1122
|
|
|
1122
1123
|
if effective_agent_mode and (not cleaned_args or _is_root_help_request(cleaned_args)):
|
|
1123
1124
|
_print_agent_root_help()
|
|
@@ -41,7 +41,7 @@ Per-harness mapping:
|
|
|
41
41
|
- Codex subprocess: `codex exec --json`; connection: `codex app-server` (real WebSocket, JSON-RPC 2.0)
|
|
42
42
|
- OpenCode subprocess: `opencode run`; connection: `opencode serve` (HTTP+SSE)
|
|
43
43
|
- Cursor subprocess: `cursor agent <prompt>` (stdout NDJSON, no connection path — subprocess-only)
|
|
44
|
-
- Pi subprocess/connection: `pi
|
|
44
|
+
- Pi subprocess/connection: `pi --mode rpc` (JSON-RPC stdio); Pi has no subprocess-only path — the RPC mode is the connection
|
|
45
45
|
|
|
46
46
|
### Pi: Extension-Based Architecture
|
|
47
47
|
|
|
@@ -40,7 +40,7 @@ Per-harness commands:
|
|
|
40
40
|
- Codex subprocess: `codex exec --json`; connection: `codex app-server` (real WebSocket, JSON-RPC 2.0)
|
|
41
41
|
- OpenCode subprocess: `opencode run`; connection: `opencode serve` (HTTP+SSE)
|
|
42
42
|
- Cursor subprocess: `cursor agent <prompt>` (stdout NDJSON, no connection path — subprocess-only)
|
|
43
|
-
- Pi subprocess/connection: `pi
|
|
43
|
+
- Pi subprocess/connection: `pi --mode rpc` (JSON-RPC stdio; Pi has no subprocess-only path — the RPC mode is the connection)
|
|
44
44
|
|
|
45
45
|
## Bootstrap Sequence Is Load-Bearing
|
|
46
46
|
|
|
@@ -103,7 +103,7 @@ unique — always check `event.harness_id`. `turn/completed` is Codex; OpenCode
|
|
|
103
103
|
|
|
104
104
|
## Adding a Harness
|
|
105
105
|
|
|
106
|
-
Full guide: [`docs/harness-integration.md`](
|
|
106
|
+
Full guide: [`docs/harness-integration.md`](../../../../docs/harness-integration.md) —
|
|
107
107
|
end-to-end with Pi as the worked example. Covers probing, adapter, projection,
|
|
108
108
|
extraction, connection, semantics, wrapper/runtime, session parity, model/catalog,
|
|
109
109
|
and verification.
|
{meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/connections/.context/CONTEXT.md
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Architecture
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Five concrete transports share the `HarnessConnection[SpecT]` ABC from `base.py`:
|
|
6
6
|
|
|
7
7
|
| File | Class | Transport | Protocol |
|
|
8
8
|
|---|---|---|---|
|
|
@@ -10,30 +10,30 @@ Four concrete transports share the `HarnessConnection[SpecT]` ABC from `base.py`
|
|
|
10
10
|
| `codex_ws.py` | `CodexConnection` | WebSocket | JSON-RPC 2.0 |
|
|
11
11
|
| `opencode_http.py` | `OpenCodeConnection` | HTTP + SSE | REST + event stream |
|
|
12
12
|
| `cursor_subprocess.py` | `CursorSubprocessConnection` | stdout NDJSON (read-only) | stream-json |
|
|
13
|
-
| `pi_rpc.py` | `PiRpcConnection` | stdin/stdout JSONL | JSON-RPC (
|
|
13
|
+
| `pi_rpc.py` | `PiRpcConnection` | stdin/stdout JSONL | JSON-RPC (Pi RPC mode) |
|
|
14
14
|
|
|
15
|
-
**`claude_ws.py` is not a WebSocket.** The filename is
|
|
16
|
-
writes NDJSON to
|
|
17
|
-
stream-json --output-format stream-json` flags select this mode.
|
|
18
|
-
library when reading this file.
|
|
15
|
+
**`claude_ws.py` is not a WebSocket.** The filename is historical. The connection
|
|
16
|
+
writes NDJSON to subprocess stdin and reads NDJSON from stdout. The `--input-format
|
|
17
|
+
stream-json --output-format stream-json` flags select this mode.
|
|
19
18
|
|
|
20
|
-
**`pi_rpc.py`
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
**`pi_rpc.py` is transport-only.** It reads Pi stdout JSONL, writes prompt/abort JSON,
|
|
20
|
+
normalizes startup/error/session events, and emits Meridian phase diagnostics. It does
|
|
21
|
+
not tail a separate lifecycle event file. Pi background-work authority lives in disk files written
|
|
22
|
+
by Pi extensions and consumed by `lib/streaming/` (`PiDiskWatcher` / `PiQuiescenceTracker`).
|
|
23
|
+
If a canonical Pi lifecycle event appears on stdout, `PiRpcConnection` logs and drops it;
|
|
24
|
+
stdout is not the quiescence authority.
|
|
25
25
|
|
|
26
26
|
**Pi startup requires an initial prompt.** Unlike other harnesses that can start in a
|
|
27
27
|
listening state, spawned Pi RPC sessions must receive an initial user message. The
|
|
28
28
|
connection validates this (`_validate_initial_prompt_requirement()`) and enforces a
|
|
29
|
-
30-second timeout for the first
|
|
29
|
+
30-second timeout for the first stdout event after the prompt
|
|
30
|
+
(`_FIRST_STDOUT_AFTER_INITIAL_PROMPT_TIMEOUT_SECONDS`).
|
|
30
31
|
|
|
31
32
|
**`opencode_http.py` imports `OPENCODE_CONFIG_CONTENT_ENV` from
|
|
32
33
|
`meridian.lib.launch.workspace_projection`** — a cross-layer dependency on `launch/`
|
|
33
34
|
rather than `harness/`. This is intentional: `workspace_projection.py` was moved to
|
|
34
35
|
`launch/` to break a circular bootstrap dependency. Connections modules may import
|
|
35
|
-
shared constants from `launch/` when those constants live there by architecture
|
|
36
|
-
necessity.
|
|
36
|
+
shared constants from `launch/` when those constants live there by architecture necessity.
|
|
37
37
|
|
|
38
38
|
## Contracts
|
|
39
39
|
|
|
@@ -41,7 +41,7 @@ necessity.
|
|
|
41
41
|
|
|
42
42
|
Required abstract methods — every subclass must implement all of these:
|
|
43
43
|
|
|
44
|
-
- `state` property → `ConnectionState` (
|
|
44
|
+
- `state` property → `ConnectionState` (`created → starting → connected → stopping → stopped / failed`)
|
|
45
45
|
- `harness_id`, `spawn_id`, `capabilities` properties
|
|
46
46
|
- `session_id` → `str | None` (None until the transport delivers a session identifier)
|
|
47
47
|
- `subprocess_pid` → `int | None`
|
|
@@ -65,40 +65,41 @@ supports the capability:
|
|
|
65
65
|
|
|
66
66
|
`event_type` is scoped to the producing harness — it is **not globally unique**.
|
|
67
67
|
Always qualify with `harness_id` before branching on `event_type`. Same-named events
|
|
68
|
-
across harnesses have different semantics. See parent `.context/` for
|
|
69
|
-
|
|
68
|
+
across harnesses have different semantics. See parent `.context/` for terminal event
|
|
69
|
+
classification.
|
|
70
70
|
|
|
71
71
|
### ConnectionCapabilities
|
|
72
72
|
|
|
73
73
|
Frozen dataclass declared as `_CAPABILITIES` on each concrete class. Set once at class
|
|
74
74
|
definition, not per-instance. Fields:
|
|
75
75
|
|
|
76
|
-
- `mid_turn_injection`: `"queue"` (Claude), `"interrupt_restart"` (Codex), `"http_post"` (OpenCode),
|
|
77
|
-
`"queue"` (Cursor
|
|
78
|
-
for MVP. The type does not have an "unsupported" literal, so `"queue"` is used as a
|
|
79
|
-
placeholder. Do not call `send_user_message` on a Cursor connection.)
|
|
76
|
+
- `mid_turn_injection`: `"queue"` (Claude/Pi), `"interrupt_restart"` (Codex), `"http_post"` (OpenCode),
|
|
77
|
+
`"queue"` (Cursor placeholder; `send_user_message` raises)
|
|
80
78
|
- `supports_cancel`, `supports_steer`, `runtime_model_switch`, `structured_reasoning`
|
|
81
79
|
- `supports_primary_observer` — only Codex and OpenCode
|
|
82
80
|
- `supports_runtime_hitl` — runtime HITL through the connection; only Codex
|
|
83
|
-
- `supported_startup_phases` —
|
|
81
|
+
- `supported_startup_phases` — phase names the adapter can observe
|
|
84
82
|
|
|
85
|
-
### Pi
|
|
83
|
+
### Pi RPC Stdout Path
|
|
86
84
|
|
|
87
|
-
`
|
|
88
|
-
written by Pi extensions. Key design points:
|
|
85
|
+
`PiRpcConnection.events()` consumes exactly one stdout reader task. The event loop:
|
|
89
86
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
`agent_end` and at process exit to ensure no lifecycle events are missed.
|
|
96
|
-
- **Parse validation**: each line goes through `parse_pi_lifecycle_event_line()` which
|
|
97
|
-
validates schema version, parent spawn ID, correlation ID, and event type allowlist.
|
|
98
|
-
Invalid lines become `meridian.lifecycle.parse_error` events on the stream.
|
|
87
|
+
1. yields queued Meridian phase events (`process_spawned`, `initial_prompt_sent`, etc.);
|
|
88
|
+
2. waits for the first stdout event with a 30-second deadline after the initial prompt;
|
|
89
|
+
3. parses each stdout line as a Pi JSON object;
|
|
90
|
+
4. emits `first_pi_event_received` and `session_event_seen` / `session_event_absent` phase events;
|
|
91
|
+
5. yields normalized `HarnessEvent` objects to the streaming drain loop.
|
|
99
92
|
|
|
100
|
-
|
|
101
|
-
|
|
93
|
+
Malformed stdout becomes `meridian.lifecycle.parse_error` so bad protocol output fails
|
|
94
|
+
closed and stays visible. Canonical lifecycle-looking stdout events are ignored because
|
|
95
|
+
current Pi coordination is disk-backed.
|
|
96
|
+
|
|
97
|
+
### Pi Stop Path
|
|
98
|
+
|
|
99
|
+
`stop(reason="quiescent")` sends `{"type": "abort"}` to the Pi subprocess, waits a
|
|
100
|
+
5-second abort grace period, then escalates to process termination if Pi is still alive.
|
|
101
|
+
The streaming layer records cleanup phases (`cleanup_running`, `cleanup_completed`,
|
|
102
|
+
`cleanup_escalated`, `cleanup_failed`) around this transport stop.
|
|
102
103
|
|
|
103
104
|
### ServerRequestHandler — Policy Boundary
|
|
104
105
|
|
|
@@ -134,17 +135,15 @@ Both are 10 MiB uniform across adapters:
|
|
|
134
135
|
### Claude: Stdin/Stdout Instead of WebSocket
|
|
135
136
|
|
|
136
137
|
Claude CLI supports `--input-format stream-json --output-format stream-json` for
|
|
137
|
-
bidirectional NDJSON over process pipes. This avoids
|
|
138
|
-
|
|
139
|
-
avoid churn. The implementation has no WebSocket dependency.
|
|
138
|
+
bidirectional NDJSON over process pipes. This avoids a local HTTP server or WebSocket
|
|
139
|
+
listener. The `_ws.py` filename predates this transport and was kept to avoid churn.
|
|
140
140
|
|
|
141
141
|
### Codex: Port Pre-Reservation
|
|
142
142
|
|
|
143
143
|
`CodexConnection` and `passthrough/codex.py` both use `socket.socket` to bind port 0
|
|
144
144
|
and capture the ephemeral port before handing it to the subprocess. This is a TOCTOU
|
|
145
145
|
race (the OS may reassign the port before `codex app-server` binds it). If that happens,
|
|
146
|
-
`PortBindError` is raised and the caller retries with a new port.
|
|
147
|
-
recovery path — do not suppress `PortBindError`.
|
|
146
|
+
`PortBindError` is raised and the caller retries with a new port.
|
|
148
147
|
|
|
149
148
|
### Observer Endpoint
|
|
150
149
|
|
|
@@ -152,38 +151,34 @@ Codex exposes a WebSocket URL (`ws://`); OpenCode exposes an HTTP URL (`http://`
|
|
|
152
151
|
The `ObserverEndpoint` dataclass captures which transport and URL so `passthrough/` can
|
|
153
152
|
build the correct TUI attach command without knowing connection internals.
|
|
154
153
|
|
|
155
|
-
### Pi:
|
|
154
|
+
### Pi: JSON-RPC Transport vs Quiescence State
|
|
156
155
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
starving the stdout stream.
|
|
156
|
+
Pi's connection layer should stay a protocol adapter. It knows how to launch Pi RPC,
|
|
157
|
+
send prompts/abort, read stdout JSONL, redact command history, and classify startup
|
|
158
|
+
failure. It should not grow child-spawn or background-task policy. That policy belongs
|
|
159
|
+
in `lib/streaming/` because it combines harness events with spawn records, bash records,
|
|
160
|
+
notification markers, deadlines, and cleanup decisions.
|
|
163
161
|
|
|
164
162
|
### Pi: First-Event Timeout
|
|
165
163
|
|
|
166
|
-
A spawned Pi session must respond to the initial prompt within 30 seconds. If no
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
phase, before the Pi process is known to be responsive.
|
|
164
|
+
A spawned Pi session must respond to the initial prompt within 30 seconds. If no stdout
|
|
165
|
+
event arrives in that window, the connection transitions to `failed` with reason
|
|
166
|
+
`pi_rpc_no_response_after_initial_prompt`. This timeout is independent of the drain
|
|
167
|
+
loop's child-wave timeout; it only applies before Pi is known responsive.
|
|
171
168
|
|
|
172
169
|
### Pi: Prompt Redaction
|
|
173
170
|
|
|
174
|
-
|
|
171
|
+
Pi CLI args may contain secrets (e.g., `--api-key`). `redact_pi_command_for_history()`
|
|
175
172
|
in `pi_lifecycle_events.py` scans argv tokens for secret-bearing flags and replaces
|
|
176
|
-
their values with `<redacted>` before writing to
|
|
177
|
-
pattern as Claude's credential redaction but operates on the raw argv list rather
|
|
178
|
-
than the full command string.
|
|
173
|
+
their values with `<redacted>` before writing to history.
|
|
179
174
|
|
|
180
175
|
## Related .context/
|
|
181
176
|
|
|
182
177
|
- [../../.context/CONTEXT.md](../../.context/CONTEXT.md) — drain loop, terminal event semantics,
|
|
183
|
-
SpawnParams accounting
|
|
178
|
+
`SpawnParams` accounting
|
|
184
179
|
- [../../passthrough/.context/CONTEXT.md](../../passthrough/.context/CONTEXT.md) — uses
|
|
185
180
|
`ObserverEndpoint` and `ConnectionConfig` for TUI attach sequencing
|
|
186
181
|
- [../../../../pi_runtime/.context/CONTEXT.md](../../../../pi_runtime/.context/CONTEXT.md) — Pi
|
|
187
|
-
extensions that write
|
|
188
|
-
- [
|
|
189
|
-
|
|
182
|
+
extensions that write disk-backed coordination state
|
|
183
|
+
- [../../../streaming/.context/CONTEXT.md](../../../streaming/.context/CONTEXT.md) — Pi
|
|
184
|
+
quiescence drain policy that consumes disk state
|
{meridian_cli-0.2.16 → meridian_cli-0.2.18}/src/meridian/lib/harness/projections/.context/CONTEXT.md
RENAMED
|
@@ -13,7 +13,7 @@ project_codex_streaming.py → CodexLaunchSpec → args + env (codex app-serv
|
|
|
13
13
|
project_opencode_subprocess.py → OpenCodeLaunchSpec → args + env (opencode run)
|
|
14
14
|
project_opencode_streaming.py → OpenCodeLaunchSpec → args + env (opencode serve)
|
|
15
15
|
project_cursor.py → ResolvedLaunchSpec → args (cursor agent)
|
|
16
|
-
project_pi_rpc.py → ResolvedLaunchSpec → args + env (pi
|
|
16
|
+
project_pi_rpc.py → ResolvedLaunchSpec → args + env (pi --mode rpc)
|
|
17
17
|
project_pi_native_tui.py → ResolvedLaunchSpec → args + env (pi native TUI, primary only)
|
|
18
18
|
pi_extension_projection.py → (extension dist artifacts → per-launch materialization, no spec dependency)
|
|
19
19
|
```
|
|
@@ -22,6 +22,18 @@ SpawnSession
|
|
|
22
22
|
└─ control_actions: ControlActionCoordinator
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
The implementation is split by responsibility:
|
|
26
|
+
|
|
27
|
+
- `spawn_manager.py` — public registry/control API and generic live-spawn lifecycle
|
|
28
|
+
- `spawn_dispatch.py` — connection creation/start dispatch
|
|
29
|
+
- `spawn_drain_loop.py` — drain loop, persistence/observer/fan-out ordering, outcome priority
|
|
30
|
+
- `spawn_session.py` — `SpawnSession` and `DrainOutcome` carriers
|
|
31
|
+
- `pi_drain.py` — Pi spawned-session quiescence coordinator
|
|
32
|
+
- `pi_subspawn_tracker.py` — Pi child-spawn and notification tracking
|
|
33
|
+
- `disk_watcher.py` / `pi_quiescence.py` — disk-backed Pi quiescence inputs
|
|
34
|
+
- `drain_wait.py` — bounded wait helpers for drain/cleanup paths
|
|
35
|
+
- `pi_process_cleanup.py` — tracked Pi child process cleanup
|
|
36
|
+
|
|
25
37
|
## Contracts
|
|
26
38
|
|
|
27
39
|
### Drain Loop Ordering
|
|
@@ -64,7 +76,7 @@ from different event loops.
|
|
|
64
76
|
```
|
|
65
77
|
start_spawn()
|
|
66
78
|
→ dispatch_start() — creates HarnessConnection, calls connection.start()
|
|
67
|
-
→
|
|
79
|
+
→ SpawnDrainLoop.run() — asyncio.Task, until terminal or error
|
|
68
80
|
→ ControlSocketServer.start() — binds per-spawn control endpoint
|
|
69
81
|
→ _start_heartbeat() — asyncio.Task, touches sentinel every 30s
|
|
70
82
|
```
|
|
@@ -144,6 +156,12 @@ live in `pi_drain.py:PiDrainCoordinator`.
|
|
|
144
156
|
behavior to `PiDrainCoordinator` unless the change is purely generic event persistence,
|
|
145
157
|
observer dispatch, subscriber fan-out, heartbeat, or control-socket handling.
|
|
146
158
|
|
|
159
|
+
`PiSubspawnTracker` owns the mutable child-spawn view inside the coordinator. It filters
|
|
160
|
+
unresolved stale candidates to numeric allocated-looking `p*` directories, tracks
|
|
161
|
+
active child ids, preserves idle epochs across disk wakeups, and marks whether a child
|
|
162
|
+
wave needs re-arming. `PiDrainCoordinator` uses that summarized state to make deadline
|
|
163
|
+
and finalization decisions.
|
|
164
|
+
|
|
147
165
|
### Disk State Authority
|
|
148
166
|
|
|
149
167
|
Pi extensions coordinate with Python through disk files:
|
|
@@ -155,6 +173,11 @@ Pi extensions coordinate with Python through disk files:
|
|
|
155
173
|
Stdout lifecycle-like messages are diagnostic. They are not the state authority for
|
|
156
174
|
quiescence.
|
|
157
175
|
|
|
176
|
+
Disk changes are not passive. `PiDiskWatcher` wakes the drain loop when a watched file
|
|
177
|
+
changes, and the drain loop re-evaluates quiescence on those wakeups. Terminal-event
|
|
178
|
+
micro-drain re-checks disk before accepting success so a just-written child row,
|
|
179
|
+
bash update, or notification marker cannot be missed.
|
|
180
|
+
|
|
158
181
|
### Child Wave Timeout
|
|
159
182
|
|
|
160
183
|
When the parent agent is idle and disk-backed child/background work is still pending,
|
|
@@ -168,7 +191,8 @@ When a terminal event arrives but quiescence is not yet confirmed, `PiDrainCoord
|
|
|
168
191
|
enters micro-drain mode. It gives already-buffered or just-written disk/event activity a
|
|
169
192
|
short chance to arrive before accepting the terminal event as the final outcome. This
|
|
170
193
|
covers races where child state or notification markers land immediately after
|
|
171
|
-
`agent_end`.
|
|
194
|
+
`agent_end`. Micro-drain is disk-aware: timeout alone is not enough to finalize until
|
|
195
|
+
the latest disk-backed state has been read.
|
|
172
196
|
|
|
173
197
|
### Pi Phase Events
|
|
174
198
|
|
|
@@ -195,7 +219,8 @@ These are written to `history.jsonl` alongside harness events and are visible in
|
|
|
195
219
|
|
|
196
220
|
When the Pi process exits with active tracked children (crashed, killed, or otherwise
|
|
197
221
|
terminated before quiescence), `PiDrainCoordinator` coordinates cleanup through the
|
|
198
|
-
tracked child process metadata it has observed
|
|
222
|
+
tracked child process metadata it has observed. Process cleanup lives in
|
|
223
|
+
`pi_process_cleanup.py` so `SpawnManager` does not own Pi-specific process-tree policy:
|
|
199
224
|
|
|
200
225
|
- **POSIX**: iterates captured process group IDs, sends `SIGTERM` via `os.killpg()`,
|
|
201
226
|
waits 250ms, confirms liveness with `os.killpg(pgid, 0)`, then sends `SIGKILL` if
|
|
@@ -6,8 +6,9 @@ core mechanism that moves events from the harness outward to persistence, observ
|
|
|
6
6
|
and the subscriber queue.
|
|
7
7
|
|
|
8
8
|
Mostly mechanism. Generic terminal behavior lives in `DrainPolicy`; Pi spawned-session
|
|
9
|
-
quiescence is the explicit exception
|
|
10
|
-
|
|
9
|
+
quiescence is the explicit exception. Keep Pi child-wave, notification, disk-state,
|
|
10
|
+
and tracked-process cleanup policy behind the Pi coordinator/tracker modules instead
|
|
11
|
+
of growing `SpawnManager`.
|
|
11
12
|
|
|
12
13
|
## Mental Model
|
|
13
14
|
|
|
@@ -69,9 +70,15 @@ means the manager died or the spawn is orphaned.
|
|
|
69
70
|
|
|
70
71
|
## Entry Points
|
|
71
72
|
|
|
72
|
-
- `spawn_manager.py` — `SpawnManager`:
|
|
73
|
+
- `spawn_manager.py` — `SpawnManager`: public live-spawn registry/control API
|
|
74
|
+
- `spawn_dispatch.py` — connection creation/start dispatch
|
|
75
|
+
- `spawn_drain_loop.py` — event drain, persistence/observer/fan-out ordering, outcome priority
|
|
76
|
+
- `spawn_session.py` — `SpawnSession`, `DrainOutcome`
|
|
73
77
|
- `pi_drain.py` — `PiDrainCoordinator`: Pi spawned-session quiescence policy
|
|
78
|
+
- `pi_subspawn_tracker.py` — Pi child-spawn, notification, and wave tracking
|
|
74
79
|
- `disk_watcher.py` / `pi_quiescence.py` — disk-backed Pi background-work state
|
|
80
|
+
- `drain_wait.py` — bounded drain/cleanup wait helpers
|
|
81
|
+
- `pi_process_cleanup.py` — tracked Pi child process cleanup
|
|
75
82
|
- `drain_policy.py` — `DrainPolicy`, `SingleTurnDrainPolicy`, `PersistentDrainPolicy`
|
|
76
83
|
- `control_socket.py` — per-spawn inject endpoint
|
|
77
84
|
- `event_observers.py` — `EventObserverRegistry`, `EventObserver`, `CallbackObserver`
|
|
@@ -6,7 +6,8 @@ from meridian.lib.streaming.types import ControlMessage, InjectResult
|
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
8
|
from meridian.lib.streaming.control_socket import ControlSocketServer
|
|
9
|
-
from meridian.lib.streaming.spawn_manager import SpawnManager
|
|
9
|
+
from meridian.lib.streaming.spawn_manager import SpawnManager
|
|
10
|
+
from meridian.lib.streaming.spawn_session import SpawnSession
|
|
10
11
|
|
|
11
12
|
__all__ = [
|
|
12
13
|
"ControlMessage",
|
|
@@ -23,7 +24,8 @@ def __getattr__(name: str) -> object:
|
|
|
23
24
|
|
|
24
25
|
return ControlSocketServer
|
|
25
26
|
if name in {"SpawnManager", "SpawnSession"}:
|
|
26
|
-
from meridian.lib.streaming.spawn_manager import SpawnManager
|
|
27
|
+
from meridian.lib.streaming.spawn_manager import SpawnManager
|
|
28
|
+
from meridian.lib.streaming.spawn_session import SpawnSession
|
|
27
29
|
|
|
28
30
|
return {"SpawnManager": SpawnManager, "SpawnSession": SpawnSession}[name]
|
|
29
31
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|