multiagentos 0.4.0__tar.gz → 0.4.1__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.
- multiagentos-0.4.1/PKG-INFO +270 -0
- multiagentos-0.4.1/README.md +253 -0
- multiagentos-0.4.1/agents/__init__.py +1 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/__init__.py +1 -1
- multiagentos-0.4.1/core/approval.py +44 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/artifacts.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/chat_agent_bridge.py +94 -19
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/chat_agent_registry.py +3 -3
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/chat_session.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/__init__.py +6 -1
- multiagentos-0.4.0/core/contracts/vyrelon_runtime.py → multiagentos-0.4.1/core/contracts/agent_execution_runtime.py +6 -13
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/ai.py +1 -1
- multiagentos-0.4.1/core/contracts/approval.py +55 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/capability.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/chat_agent.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/checkpoint.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/discovery.py +1 -1
- multiagentos-0.4.1/core/contracts/execution_cursor.py +20 -0
- multiagentos-0.4.1/core/contracts/execution_limits.py +47 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/handoff.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/health.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/human_review.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/ide.py +6 -6
- multiagentos-0.4.1/core/contracts/idempotency.py +26 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/mcp.py +2 -2
- multiagentos-0.4.1/core/contracts/memory.py +24 -0
- multiagentos-0.4.1/core/contracts/policy_decision.py +34 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/profile.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/quota.py +1 -1
- multiagentos-0.4.1/core/contracts/recovery.py +45 -0
- multiagentos-0.4.1/core/contracts/replay.py +29 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/repository.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/resume.py +1 -1
- multiagentos-0.4.1/core/contracts/streaming.py +59 -0
- multiagentos-0.4.1/core/contracts/tool_ledger.py +52 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/work_unit.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/delegation.py +1 -1
- multiagentos-0.4.1/core/execution_limits.py +87 -0
- multiagentos-0.4.1/core/execution_state.py +140 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/lifecycle.py +1 -1
- multiagentos-0.4.1/core/memory.py +74 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/multi_agent_workflow.py +40 -5
- multiagentos-0.4.1/core/orchestrator.py +176 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/planning.py +1 -1
- multiagentos-0.4.1/core/policy_decision.py +51 -0
- multiagentos-0.4.1/core/recovery_audit.py +45 -0
- multiagentos-0.4.1/core/security.py +32 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/state.py +41 -1
- multiagentos-0.4.1/core/tool_ledger.py +93 -0
- multiagentos-0.4.1/installer/__init__.py +1 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/installer/init.py +4 -4
- multiagentos-0.4.1/integrations/openai/__init__.py +1 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/integrations/openai/chat_agent.py +4 -4
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos/cli.py +49 -31
- multiagentos-0.4.1/multiagentos.egg-info/PKG-INFO +270 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos.egg-info/SOURCES.txt +52 -4
- multiagentos-0.4.1/multiagentos.egg-info/requires.txt +7 -0
- multiagentos-0.4.1/profiles/__init__.py +1 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/profiles/registry.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/profiles/resolver.py +1 -1
- multiagentos-0.4.1/pyproject.toml +28 -0
- multiagentos-0.4.1/runtime/__init__.py +5 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/agent/ide.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/agent/model.py +43 -8
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/agent/model_backed.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/agent/process.py +1 -1
- multiagentos-0.4.0/runtime/vyrelon.py → multiagentos-0.4.1/runtime/agent_execution_runtime.py +291 -65
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/builtin_tools.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/chat_config.py +1 -1
- multiagentos-0.4.1/runtime/chat_execution.py +95 -0
- multiagentos-0.4.1/runtime/config/__init__.py +1 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/discovery.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/execution_config.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/execution_registry.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/git.py +12 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/github.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/github_probe.py +1 -1
- multiagentos-0.4.1/runtime/harness.py +107 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/ide/bridge.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/__init__.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/filesystem.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/patch.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/path_security.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/permissions.py +1 -1
- multiagentos-0.4.1/runtime/mcp/__init__.py +17 -0
- multiagentos-0.4.1/runtime/mcp/agent_execution_runtime_server.py +8 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/client.py +2 -2
- multiagentos-0.4.1/runtime/mcp/durable_bridge.py +431 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/policy.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/server.py +61 -18
- multiagentos-0.4.1/runtime/mcp/streamable_http.py +193 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/__init__.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/ai_runtime.py +3 -3
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/config.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/native.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/providers.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/runtime_loader.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model_control.py +5 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/multi_agent.py +45 -60
- multiagentos-0.4.1/runtime/observability.py +140 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/policy.py +22 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/quota.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/repository.py +2 -2
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/repository_tools.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/status.py +1 -1
- multiagentos-0.4.1/runtime/streaming.py +309 -0
- multiagentos-0.4.1/runtime/tool_calling.py +538 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/validation.py +3 -3
- multiagentos-0.4.0/tests/test_vyrelon_runtime.py → multiagentos-0.4.1/tests/test_agent_execution_runtime.py +81 -13
- multiagentos-0.4.1/tests/test_agent_execution_runtime_api.py +34 -0
- multiagentos-0.4.1/tests/test_agent_plugin.py +21 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_ai_runtime.py +2 -2
- multiagentos-0.4.1/tests/test_approval_boundary.py +77 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_builtin_tools.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_agent_bridge.py +45 -7
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_config.py +4 -4
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_execution.py +6 -6
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_cli.py +24 -22
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_cli_run_resume.py +7 -5
- multiagentos-0.4.1/tests/test_durable_runtime_contracts.py +56 -0
- multiagentos-0.4.1/tests/test_execution_harness.py +49 -0
- multiagentos-0.4.1/tests/test_execution_limits.py +41 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_github_probe.py +1 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_human_review_persistence.py +3 -3
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_ide_runtime.py +7 -5
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_local_process.py +3 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_local_tool_runtime.py +3 -3
- multiagentos-0.4.1/tests/test_mcp_durable_execution.py +214 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_mcp_policy.py +1 -1
- multiagentos-0.4.1/tests/test_mcp_sdk_compatibility.py +123 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_mcp_server.py +20 -7
- multiagentos-0.4.1/tests/test_mcp_streamable_http.py +342 -0
- multiagentos-0.4.1/tests/test_model_control_routing.py +110 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_runtime.py +2 -1
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_multi_agent_workflow.py +5 -5
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_native_provider_tool_calling.py +1 -1
- multiagentos-0.4.1/tests/test_no_legacy_runtime_name.py +33 -0
- multiagentos-0.4.1/tests/test_observability.py +56 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_openai_chat_agent.py +3 -3
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_orchestrator.py +32 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_persistent_model_cli.py +3 -3
- multiagentos-0.4.1/tests/test_policy_decision_evidence.py +67 -0
- multiagentos-0.4.1/tests/test_project_memory.py +36 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_provider_registry.py +5 -5
- multiagentos-0.4.1/tests/test_recovery_audit_source_guard.py +38 -0
- multiagentos-0.4.1/tests/test_recovery_authorization_contract.py +113 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_repository_tools.py +1 -1
- multiagentos-0.4.1/tests/test_runtime_execution_inspection.py +71 -0
- multiagentos-0.4.1/tests/test_runtime_recovery_contract.py +59 -0
- multiagentos-0.4.1/tests/test_runtime_recovery_resume_gate.py +42 -0
- multiagentos-0.4.1/tests/test_runtime_security_boundary.py +99 -0
- multiagentos-0.4.1/tests/test_streaming_runtime.py +184 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_tool_calling_runtime.py +12 -2
- multiagentos-0.4.1/tests/test_tool_ledger_runtime.py +285 -0
- multiagentos-0.4.1/tests/test_tunnel_client_mcp_health.py +74 -0
- multiagentos-0.4.1/tests/test_tunnel_client_runtime_status.py +64 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_unified_checkpoints.py +4 -4
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_validation_runtime.py +7 -5
- multiagentos-0.4.0/PKG-INFO +0 -7
- multiagentos-0.4.0/README.md +0 -301
- multiagentos-0.4.0/agents/__init__.py +0 -1
- multiagentos-0.4.0/core/orchestrator.py +0 -51
- multiagentos-0.4.0/installer/__init__.py +0 -1
- multiagentos-0.4.0/integrations/openai/__init__.py +0 -1
- multiagentos-0.4.0/multiagentos.egg-info/PKG-INFO +0 -7
- multiagentos-0.4.0/multiagentos.egg-info/requires.txt +0 -3
- multiagentos-0.4.0/profiles/__init__.py +0 -1
- multiagentos-0.4.0/pyproject.toml +0 -19
- multiagentos-0.4.0/runtime/__init__.py +0 -5
- multiagentos-0.4.0/runtime/chat_execution.py +0 -52
- multiagentos-0.4.0/runtime/config/__init__.py +0 -1
- multiagentos-0.4.0/runtime/mcp/__init__.py +0 -7
- multiagentos-0.4.0/runtime/tool_calling.py +0 -134
- {multiagentos-0.4.0 → multiagentos-0.4.1}/agents/catalog.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/agents/registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/chat_agent_router.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/agent.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/execution.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/github.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/model_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/planning.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/contracts/runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/handoff.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/core/routing.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/integrations/__init__.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/integrations/github/__init__.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/integrations/github/gateway.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos/__init__.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos.egg-info/dependency_links.txt +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos.egg-info/entry_points.txt +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/multiagentos.egg-info/top_level.txt +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/profiles/common.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/profiles/detector.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/agent/__init__.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/capability.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/chat_adapter_registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/config/loader.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/health.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/ide/__init__.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/ide/registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/ide/runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/process.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/local/shell.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/config.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/proxy.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/mcp/session.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/cli.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/credentials.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/factory.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/http.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/invoker.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/materializer.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/model/registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/runtime/process.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/setup.cfg +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_agents_and_handoff.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_adapter_registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_agent_router_session.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_chat_agents.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_cli_providers.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_config_loader.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_configured_model_cli.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_core_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_credentials.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_execution_config.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_execution_registry.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_git_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_github_contract.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_github_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_http_model_adapter.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_ide_bridge.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_ide_tool_calling.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_mcp_cost_boundary.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_mcp_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_agent.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_backed_agent.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_capability.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_control.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_factory.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_failover.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_health.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_model_intelligence_sync.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_multi_agent_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_planning_state.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_profile_contracts.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_profiles_installer.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_project_routing.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_provider_config.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_provider_discovery.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_provider_materializer.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_provider_runtime_loader.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_quota_helpers.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_quota_intelligence.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_quota_provider_metadata.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_quota_routing.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_release_security_boundaries.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_repository_runtime.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_routing_explainability.py +0 -0
- {multiagentos-0.4.0 → multiagentos-0.4.1}/tests/test_runtime_adapters.py +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: multiagentos
|
|
3
|
+
Version: 0.4.1
|
|
4
|
+
Summary: Cost-free, local-first, GitHub-native multi-agent development orchestration
|
|
5
|
+
Project-URL: Homepage, https://github.com/eaglesjo/MultiAgentOS
|
|
6
|
+
Project-URL: Repository, https://github.com/eaglesjo/MultiAgentOS
|
|
7
|
+
Project-URL: Documentation, https://github.com/eaglesjo/MultiAgentOS/tree/main/docs
|
|
8
|
+
Project-URL: Changelog, https://github.com/eaglesjo/MultiAgentOS/blob/main/CHANGELOG.md
|
|
9
|
+
Project-URL: Download, https://pypi.org/project/multiagentos/#files
|
|
10
|
+
Requires-Python: >=3.10
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
Provides-Extra: chatgpt
|
|
13
|
+
Requires-Dist: openai>=1.0; extra == "chatgpt"
|
|
14
|
+
Provides-Extra: mcp-http
|
|
15
|
+
Requires-Dist: mcp<3,>=2.2; extra == "mcp-http"
|
|
16
|
+
Requires-Dist: uvicorn>=0.30; extra == "mcp-http"
|
|
17
|
+
|
|
18
|
+
# MultiAgentOS
|
|
19
|
+
|
|
20
|
+
> **Cost-Free Multi-Agent Development Orchestration**
|
|
21
|
+
|
|
22
|
+
MultiAgentOS is a local-first development orchestration platform built around **Agent Execution Runtime**.
|
|
23
|
+
|
|
24
|
+
The cost-free baseline does **not require a separate paid AI API key**. MultiAgentOS connects an already-available AI client with GitHub and a local project while keeping execution authority inside Agent Execution Runtime.
|
|
25
|
+
|
|
26
|
+
## Why MultiAgentOS
|
|
27
|
+
|
|
28
|
+
MultiAgentOS separates **AI collaboration** from **execution authority**.
|
|
29
|
+
|
|
30
|
+
- **ChatGPT Web** — single user-facing entry point
|
|
31
|
+
- **ChatGPT Codex Connector** — remote GitHub repository access
|
|
32
|
+
- **Agent Execution Runtime MCP / Secure Tunnel** — local project access
|
|
33
|
+
- **Orchestrator** — top-level multi-agent coordination
|
|
34
|
+
- **MultiAgentWorkflow** — concrete Developer → Tester → Reviewer execution
|
|
35
|
+
- **Agent Execution Runtime** — permission and execution authority
|
|
36
|
+
|
|
37
|
+
Agents provide intent, plans, and results. They do not directly own filesystem, process, patch, or Git execution authority.
|
|
38
|
+
|
|
39
|
+
## Architecture
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
Web Browser
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
ChatGPT Web
|
|
46
|
+
|
|
|
47
|
+
+---------+---------+
|
|
48
|
+
| |
|
|
49
|
+
v v
|
|
50
|
+
ChatGPT Codex Connector Agent Execution Runtime
|
|
51
|
+
| MCP / Secure Tunnel
|
|
52
|
+
v |
|
|
53
|
+
GitHub Repository v
|
|
54
|
+
Local Project
|
|
55
|
+
| |
|
|
56
|
+
+---------+---------+
|
|
57
|
+
|
|
|
58
|
+
v
|
|
59
|
+
MultiAgentOS
|
|
60
|
+
|
|
|
61
|
+
v
|
|
62
|
+
Orchestrator
|
|
63
|
+
|
|
|
64
|
+
v
|
|
65
|
+
MultiAgentWorkflow
|
|
66
|
+
/ | \
|
|
67
|
+
Developer Tester Reviewer
|
|
68
|
+
|
|
|
69
|
+
v
|
|
70
|
+
Verification
|
|
71
|
+
|
|
|
72
|
+
v
|
|
73
|
+
Agent Execution Runtime
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Responsibility boundaries
|
|
77
|
+
|
|
78
|
+
| Component | Responsibility |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| **ChatGPT Web** | User-facing entry point |
|
|
81
|
+
| **ChatGPT Codex Connector** | Remote GitHub repository access |
|
|
82
|
+
| **Agent Execution Runtime MCP / Secure Tunnel** | Local project connection |
|
|
83
|
+
| **MultiAgentOS** | Agent contracts, routing, state, and orchestration |
|
|
84
|
+
| **Orchestrator** | Overall collaboration coordination |
|
|
85
|
+
| **MultiAgentWorkflow** | Stage, handoff, review, and rework semantics |
|
|
86
|
+
| **Agent Execution Runtime** | Permission and execution authority |
|
|
87
|
+
|
|
88
|
+
## Multi-agent workflow
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
Request
|
|
92
|
+
|
|
|
93
|
+
v
|
|
94
|
+
Orchestrator
|
|
95
|
+
|
|
|
96
|
+
v
|
|
97
|
+
MultiAgentWorkflow
|
|
98
|
+
|
|
|
99
|
+
+--> Developer
|
|
100
|
+
|
|
|
101
|
+
+--> Tester
|
|
102
|
+
|
|
|
103
|
+
+--> Reviewer
|
|
104
|
+
|
|
|
105
|
+
+--> Rework when required
|
|
106
|
+
|
|
|
107
|
+
v
|
|
108
|
+
Verification
|
|
109
|
+
|
|
|
110
|
+
v
|
|
111
|
+
Completed / Failed
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`Orchestrator.run_workflow()` is the stable higher-level orchestration entry point. `MultiAgentWorkflow` owns the concrete stage, handoff, review, and rework semantics. `MultiAgentRuntime` remains an application/runtime adapter and delegates execution to the orchestration boundary.
|
|
115
|
+
|
|
116
|
+
Agent Execution Runtime remains the execution boundary for permissions, filesystem access, patch application, process execution, Git operations, and verification.
|
|
117
|
+
|
|
118
|
+
## Connection model
|
|
119
|
+
|
|
120
|
+
### Remote GitHub path
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
ChatGPT Web
|
|
124
|
+
|
|
|
125
|
+
v
|
|
126
|
+
ChatGPT Codex Connector
|
|
127
|
+
|
|
|
128
|
+
v
|
|
129
|
+
GitHub Repository
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
This path addresses the remote repository and its durable GitHub state.
|
|
133
|
+
|
|
134
|
+
### Local project path
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
ChatGPT Web
|
|
138
|
+
|
|
|
139
|
+
v
|
|
140
|
+
Agent Execution Runtime MCP / Secure Tunnel
|
|
141
|
+
|
|
|
142
|
+
v
|
|
143
|
+
Agent Execution Runtime
|
|
144
|
+
|
|
|
145
|
+
v
|
|
146
|
+
Local Project
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Agent Execution Runtime has **one MCP Server**. Secure MCP Tunnel and `tunnel-client` are transport/connection infrastructure, not another MCP server.
|
|
150
|
+
|
|
151
|
+
The local Agent Execution Runtime MCP server can be used independently without OpenAI, ChatGPT, a tunnel, or a paid AI API key.
|
|
152
|
+
|
|
153
|
+
## Terminology
|
|
154
|
+
|
|
155
|
+
**Agent Execution Runtime** is the descriptive architectural name for the local execution and permission boundary
|
|
156
|
+
|
|
157
|
+
## Cost-Free baseline
|
|
158
|
+
|
|
159
|
+
The core positioning is simple:
|
|
160
|
+
|
|
161
|
+
> **No separate paid AI API key is required for the MultiAgentOS cost-free baseline.**
|
|
162
|
+
|
|
163
|
+
The baseline also does not require:
|
|
164
|
+
|
|
165
|
+
- a separate agent API subscription
|
|
166
|
+
- a MultiAgentOS SaaS subscription
|
|
167
|
+
- a second MCP server for the tunnel path
|
|
168
|
+
|
|
169
|
+
AI-client/product plan limits still apply to the AI service you choose to use. “Cost-Free” describes the MultiAgentOS runtime architecture; it does not mean unlimited AI-service usage.
|
|
170
|
+
|
|
171
|
+
### Verified baseline capabilities
|
|
172
|
+
|
|
173
|
+
- Agent Execution Runtime MCP stdio initialization and tool discovery
|
|
174
|
+
- filesystem READ / WRITE
|
|
175
|
+
- `patch.apply`
|
|
176
|
+
- `shell.run`
|
|
177
|
+
- local MCP/runtime tests
|
|
178
|
+
- runtime health/readiness
|
|
179
|
+
- Secure MCP Tunnel readiness
|
|
180
|
+
|
|
181
|
+
See [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md) for the verification record.
|
|
182
|
+
|
|
183
|
+
## Quick start
|
|
184
|
+
|
|
185
|
+
### Install
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
python3 -m pip install multiagentos
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
#**[Download files on PyPI](https://pypi.org/project/multiagentos/#files)**
|
|
192
|
+
|
|
193
|
+
## Initialize a project
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
cd your-project
|
|
197
|
+
multiagentos init . --component all
|
|
198
|
+
multiagentos status .
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Run a local task
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
multiagentos run --path . --objective "run tests" -- python -m unittest discover -s tests -v
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Start a Chat Agent session
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
multiagentos chat --path . --objective "inspect the current project"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Expose the Agent Execution Runtime MCP server
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
multiagentos mcp serve --path .
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
For explicit filesystem writes and process execution:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
multiagentos mcp serve \
|
|
223
|
+
--path . \
|
|
224
|
+
--allow-write \
|
|
225
|
+
--allow-process
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Configuration
|
|
229
|
+
|
|
230
|
+
Project configuration is stored under `.multiagentos/`.
|
|
231
|
+
|
|
232
|
+
The initializer can install:
|
|
233
|
+
|
|
234
|
+
- `components.json` — selected components
|
|
235
|
+
- `execution.json` — execution Agent/Model selection
|
|
236
|
+
- `chat.json` — Chat Agent selection
|
|
237
|
+
- `agents.json` — multi-agent catalog
|
|
238
|
+
- `state/` and session/checkpoint data as applicable
|
|
239
|
+
|
|
240
|
+
Credentials and provider API keys are not written to project configuration.
|
|
241
|
+
|
|
242
|
+
## Validation
|
|
243
|
+
|
|
244
|
+
Run the local test suite:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
python -m unittest discover -s tests -v
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
GitHub Actions validates the repository through CI.
|
|
251
|
+
|
|
252
|
+
## Documentation
|
|
253
|
+
|
|
254
|
+
- [Getting Started](docs/GETTING_STARTED.md)
|
|
255
|
+
- [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md)
|
|
256
|
+
- [Agent Execution Runtime Connection Guide](docs/AGENT_EXECUTION_RUNTIME_CONNECTIONS.md)
|
|
257
|
+
- [Secure MCP Tunnel Setup](docs/MCP_TUNNEL.md)
|
|
258
|
+
- [macOS MCP Service](docs/MACOS_MCP_SERVICE.md)
|
|
259
|
+
- [macOS tunnel-client Service](docs/MACOS_TUNNEL_SERVICE.md)
|
|
260
|
+
- [Agent Execution Runtime GitHub Connection](docs/AGENT_EXECUTION_RUNTIME_GITHUB_CONNECTION.md)
|
|
261
|
+
- [Agent Execution Runtime MCP Architecture](docs/ARCHITECTURE_DECISIONS.md)
|
|
262
|
+
- [Agent Plugin Marketplace](docs/PLUGIN_MARKETPLACE.md)
|
|
263
|
+
|
|
264
|
+
The English README is the canonical technical document. Localized READMEs preserve the same architecture, terminology, and cost-free baseline.
|
|
265
|
+
|
|
266
|
+
**[한국어](README.ko.md) · [日本語](README.ja.md) · [简体中文](README.zh-CN.md)**
|
|
267
|
+
|
|
268
|
+
## License
|
|
269
|
+
|
|
270
|
+
See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# MultiAgentOS
|
|
2
|
+
|
|
3
|
+
> **Cost-Free Multi-Agent Development Orchestration**
|
|
4
|
+
|
|
5
|
+
MultiAgentOS is a local-first development orchestration platform built around **Agent Execution Runtime**.
|
|
6
|
+
|
|
7
|
+
The cost-free baseline does **not require a separate paid AI API key**. MultiAgentOS connects an already-available AI client with GitHub and a local project while keeping execution authority inside Agent Execution Runtime.
|
|
8
|
+
|
|
9
|
+
## Why MultiAgentOS
|
|
10
|
+
|
|
11
|
+
MultiAgentOS separates **AI collaboration** from **execution authority**.
|
|
12
|
+
|
|
13
|
+
- **ChatGPT Web** — single user-facing entry point
|
|
14
|
+
- **ChatGPT Codex Connector** — remote GitHub repository access
|
|
15
|
+
- **Agent Execution Runtime MCP / Secure Tunnel** — local project access
|
|
16
|
+
- **Orchestrator** — top-level multi-agent coordination
|
|
17
|
+
- **MultiAgentWorkflow** — concrete Developer → Tester → Reviewer execution
|
|
18
|
+
- **Agent Execution Runtime** — permission and execution authority
|
|
19
|
+
|
|
20
|
+
Agents provide intent, plans, and results. They do not directly own filesystem, process, patch, or Git execution authority.
|
|
21
|
+
|
|
22
|
+
## Architecture
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
Web Browser
|
|
26
|
+
|
|
|
27
|
+
v
|
|
28
|
+
ChatGPT Web
|
|
29
|
+
|
|
|
30
|
+
+---------+---------+
|
|
31
|
+
| |
|
|
32
|
+
v v
|
|
33
|
+
ChatGPT Codex Connector Agent Execution Runtime
|
|
34
|
+
| MCP / Secure Tunnel
|
|
35
|
+
v |
|
|
36
|
+
GitHub Repository v
|
|
37
|
+
Local Project
|
|
38
|
+
| |
|
|
39
|
+
+---------+---------+
|
|
40
|
+
|
|
|
41
|
+
v
|
|
42
|
+
MultiAgentOS
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
Orchestrator
|
|
46
|
+
|
|
|
47
|
+
v
|
|
48
|
+
MultiAgentWorkflow
|
|
49
|
+
/ | \
|
|
50
|
+
Developer Tester Reviewer
|
|
51
|
+
|
|
|
52
|
+
v
|
|
53
|
+
Verification
|
|
54
|
+
|
|
|
55
|
+
v
|
|
56
|
+
Agent Execution Runtime
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Responsibility boundaries
|
|
60
|
+
|
|
61
|
+
| Component | Responsibility |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| **ChatGPT Web** | User-facing entry point |
|
|
64
|
+
| **ChatGPT Codex Connector** | Remote GitHub repository access |
|
|
65
|
+
| **Agent Execution Runtime MCP / Secure Tunnel** | Local project connection |
|
|
66
|
+
| **MultiAgentOS** | Agent contracts, routing, state, and orchestration |
|
|
67
|
+
| **Orchestrator** | Overall collaboration coordination |
|
|
68
|
+
| **MultiAgentWorkflow** | Stage, handoff, review, and rework semantics |
|
|
69
|
+
| **Agent Execution Runtime** | Permission and execution authority |
|
|
70
|
+
|
|
71
|
+
## Multi-agent workflow
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
Request
|
|
75
|
+
|
|
|
76
|
+
v
|
|
77
|
+
Orchestrator
|
|
78
|
+
|
|
|
79
|
+
v
|
|
80
|
+
MultiAgentWorkflow
|
|
81
|
+
|
|
|
82
|
+
+--> Developer
|
|
83
|
+
|
|
|
84
|
+
+--> Tester
|
|
85
|
+
|
|
|
86
|
+
+--> Reviewer
|
|
87
|
+
|
|
|
88
|
+
+--> Rework when required
|
|
89
|
+
|
|
|
90
|
+
v
|
|
91
|
+
Verification
|
|
92
|
+
|
|
|
93
|
+
v
|
|
94
|
+
Completed / Failed
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
`Orchestrator.run_workflow()` is the stable higher-level orchestration entry point. `MultiAgentWorkflow` owns the concrete stage, handoff, review, and rework semantics. `MultiAgentRuntime` remains an application/runtime adapter and delegates execution to the orchestration boundary.
|
|
98
|
+
|
|
99
|
+
Agent Execution Runtime remains the execution boundary for permissions, filesystem access, patch application, process execution, Git operations, and verification.
|
|
100
|
+
|
|
101
|
+
## Connection model
|
|
102
|
+
|
|
103
|
+
### Remote GitHub path
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
ChatGPT Web
|
|
107
|
+
|
|
|
108
|
+
v
|
|
109
|
+
ChatGPT Codex Connector
|
|
110
|
+
|
|
|
111
|
+
v
|
|
112
|
+
GitHub Repository
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
This path addresses the remote repository and its durable GitHub state.
|
|
116
|
+
|
|
117
|
+
### Local project path
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
ChatGPT Web
|
|
121
|
+
|
|
|
122
|
+
v
|
|
123
|
+
Agent Execution Runtime MCP / Secure Tunnel
|
|
124
|
+
|
|
|
125
|
+
v
|
|
126
|
+
Agent Execution Runtime
|
|
127
|
+
|
|
|
128
|
+
v
|
|
129
|
+
Local Project
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Agent Execution Runtime has **one MCP Server**. Secure MCP Tunnel and `tunnel-client` are transport/connection infrastructure, not another MCP server.
|
|
133
|
+
|
|
134
|
+
The local Agent Execution Runtime MCP server can be used independently without OpenAI, ChatGPT, a tunnel, or a paid AI API key.
|
|
135
|
+
|
|
136
|
+
## Terminology
|
|
137
|
+
|
|
138
|
+
**Agent Execution Runtime** is the descriptive architectural name for the local execution and permission boundary
|
|
139
|
+
|
|
140
|
+
## Cost-Free baseline
|
|
141
|
+
|
|
142
|
+
The core positioning is simple:
|
|
143
|
+
|
|
144
|
+
> **No separate paid AI API key is required for the MultiAgentOS cost-free baseline.**
|
|
145
|
+
|
|
146
|
+
The baseline also does not require:
|
|
147
|
+
|
|
148
|
+
- a separate agent API subscription
|
|
149
|
+
- a MultiAgentOS SaaS subscription
|
|
150
|
+
- a second MCP server for the tunnel path
|
|
151
|
+
|
|
152
|
+
AI-client/product plan limits still apply to the AI service you choose to use. “Cost-Free” describes the MultiAgentOS runtime architecture; it does not mean unlimited AI-service usage.
|
|
153
|
+
|
|
154
|
+
### Verified baseline capabilities
|
|
155
|
+
|
|
156
|
+
- Agent Execution Runtime MCP stdio initialization and tool discovery
|
|
157
|
+
- filesystem READ / WRITE
|
|
158
|
+
- `patch.apply`
|
|
159
|
+
- `shell.run`
|
|
160
|
+
- local MCP/runtime tests
|
|
161
|
+
- runtime health/readiness
|
|
162
|
+
- Secure MCP Tunnel readiness
|
|
163
|
+
|
|
164
|
+
See [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md) for the verification record.
|
|
165
|
+
|
|
166
|
+
## Quick start
|
|
167
|
+
|
|
168
|
+
### Install
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
python3 -m pip install multiagentos
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
#**[Download files on PyPI](https://pypi.org/project/multiagentos/#files)**
|
|
175
|
+
|
|
176
|
+
## Initialize a project
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
cd your-project
|
|
180
|
+
multiagentos init . --component all
|
|
181
|
+
multiagentos status .
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Run a local task
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
multiagentos run --path . --objective "run tests" -- python -m unittest discover -s tests -v
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Start a Chat Agent session
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
multiagentos chat --path . --objective "inspect the current project"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Expose the Agent Execution Runtime MCP server
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
multiagentos mcp serve --path .
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
For explicit filesystem writes and process execution:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
multiagentos mcp serve \
|
|
206
|
+
--path . \
|
|
207
|
+
--allow-write \
|
|
208
|
+
--allow-process
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Configuration
|
|
212
|
+
|
|
213
|
+
Project configuration is stored under `.multiagentos/`.
|
|
214
|
+
|
|
215
|
+
The initializer can install:
|
|
216
|
+
|
|
217
|
+
- `components.json` — selected components
|
|
218
|
+
- `execution.json` — execution Agent/Model selection
|
|
219
|
+
- `chat.json` — Chat Agent selection
|
|
220
|
+
- `agents.json` — multi-agent catalog
|
|
221
|
+
- `state/` and session/checkpoint data as applicable
|
|
222
|
+
|
|
223
|
+
Credentials and provider API keys are not written to project configuration.
|
|
224
|
+
|
|
225
|
+
## Validation
|
|
226
|
+
|
|
227
|
+
Run the local test suite:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
python -m unittest discover -s tests -v
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
GitHub Actions validates the repository through CI.
|
|
234
|
+
|
|
235
|
+
## Documentation
|
|
236
|
+
|
|
237
|
+
- [Getting Started](docs/GETTING_STARTED.md)
|
|
238
|
+
- [Cost-Free Development Baseline](docs/COSTFREE_DEVELOPMENT.md)
|
|
239
|
+
- [Agent Execution Runtime Connection Guide](docs/AGENT_EXECUTION_RUNTIME_CONNECTIONS.md)
|
|
240
|
+
- [Secure MCP Tunnel Setup](docs/MCP_TUNNEL.md)
|
|
241
|
+
- [macOS MCP Service](docs/MACOS_MCP_SERVICE.md)
|
|
242
|
+
- [macOS tunnel-client Service](docs/MACOS_TUNNEL_SERVICE.md)
|
|
243
|
+
- [Agent Execution Runtime GitHub Connection](docs/AGENT_EXECUTION_RUNTIME_GITHUB_CONNECTION.md)
|
|
244
|
+
- [Agent Execution Runtime MCP Architecture](docs/ARCHITECTURE_DECISIONS.md)
|
|
245
|
+
- [Agent Plugin Marketplace](docs/PLUGIN_MARKETPLACE.md)
|
|
246
|
+
|
|
247
|
+
The English README is the canonical technical document. Localized READMEs preserve the same architecture, terminology, and cost-free baseline.
|
|
248
|
+
|
|
249
|
+
**[한국어](README.ko.md) · [日本語](README.ja.md) · [简体中文](README.zh-CN.md)**
|
|
250
|
+
|
|
251
|
+
## License
|
|
252
|
+
|
|
253
|
+
See [LICENSE](LICENSE).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Built-in AGENT_EXECUTION_RUNTIME agent catalog."""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""AGENT_EXECUTION_RUNTIME orchestration core."""
|
|
2
2
|
|
|
3
3
|
from core.chat_agent_bridge import ChatAgentBridge, ChatAgentExecutionResult, ChatAgentRequest, ChatAgentResponse
|
|
4
4
|
from core.chat_agent_registry import ChatAgentRegistry, default_chat_agents
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""Durable, redacted approval evidence."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from core.contracts.approval import ApprovalGrant, ApprovalDecision
|
|
9
|
+
from core.security import redact_sensitive
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ApprovalStore:
|
|
13
|
+
"""Persist approval decisions without prompts, credentials, or raw arguments."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, root: Path) -> None:
|
|
16
|
+
self.root = Path(root)
|
|
17
|
+
self.root.mkdir(parents=True, exist_ok=True)
|
|
18
|
+
|
|
19
|
+
def save(self, grant: ApprovalGrant, *, metadata: dict[str, object] | None = None) -> Path:
|
|
20
|
+
path = self.root / f"{grant.approval_id}.json"
|
|
21
|
+
payload = redact_sensitive({
|
|
22
|
+
"approval_id": grant.approval_id,
|
|
23
|
+
"decision": grant.decision.value,
|
|
24
|
+
"action": grant.action,
|
|
25
|
+
"work_unit_id": grant.work_unit_id,
|
|
26
|
+
"session_id": grant.session_id,
|
|
27
|
+
"expires_at": grant.expires_at,
|
|
28
|
+
"reason": grant.reason,
|
|
29
|
+
"metadata": dict(metadata or {}),
|
|
30
|
+
})
|
|
31
|
+
path.write_text(json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
|
32
|
+
return path
|
|
33
|
+
|
|
34
|
+
def load(self, approval_id: str) -> ApprovalGrant:
|
|
35
|
+
data = json.loads((self.root / f"{approval_id}.json").read_text(encoding="utf-8"))
|
|
36
|
+
return ApprovalGrant(
|
|
37
|
+
approval_id=str(data["approval_id"]),
|
|
38
|
+
decision=ApprovalDecision(str(data["decision"])),
|
|
39
|
+
action=str(data["action"]),
|
|
40
|
+
work_unit_id=data.get("work_unit_id"),
|
|
41
|
+
session_id=data.get("session_id"),
|
|
42
|
+
expires_at=data.get("expires_at"),
|
|
43
|
+
reason=str(data.get("reason", "")),
|
|
44
|
+
)
|