multi-agent-platform 0.3.1__tar.gz → 0.3.2__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.
- {multi_agent_platform-0.3.1/multi_agent_platform.egg-info → multi_agent_platform-0.3.2}/PKG-INFO +27 -17
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/README.md +14 -7
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/experiment.py +9 -7
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/feedback.py +2 -2
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/notification.py +1 -1
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/project.py +2 -3
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/sync.py +3 -4
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/topic.py +7 -5
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/main.py +2 -2
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/map-project-collab/references/bootstrap-troubleshooting.md +10 -8
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/scripts/map-bootstrap.sh +7 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2/multi_agent_platform.egg-info}/PKG-INFO +27 -17
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/SOURCES.txt +3 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/requires.txt +13 -9
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/top_level.txt +1 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/pyproject.toml +19 -13
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/bootstrap.py +148 -2
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_types/__init__.py +3 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_types/schemas.py +29 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/__version__.py +1 -1
- multi_agent_platform-0.3.2/server/api/bootstrap.py +55 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/router.py +2 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/main.py +2 -0
- multi_agent_platform-0.3.2/server/services/bootstrap_service.py +129 -0
- multi_agent_platform-0.3.2/tests/test_bootstrap.py +152 -0
- multi_agent_platform-0.3.1/cli/skills/map-project-collab/scripts/map-bootstrap.sh +0 -6
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/LICENSE +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/action_item_escalation.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/agent_client.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/bridge_state.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/action.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/agent.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/audit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/docs.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/host.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/persona.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/runtime.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/commands/skill.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/e2e_collab.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/host_worker_types.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/local_cache.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/map_command_client.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/orchestrator.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/participant_worker.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/project_export.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/reviewer_worker.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/runtime/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/runtime/run_lock.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/runtime_chat.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/session_wake_log.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/simple_waker.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/experiment-host/SKILL.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/experiment-host/references/lifecycle-transitions.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/experiment-reviewer/SKILL.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/experiment-reviewer/references/review-format-guide.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/map-project-collab/SKILL.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/map-project-collab/agents/openai.yaml +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/map-project-collab/references/waker-mode.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/topic-host/SKILL.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/topic-host/references/experiment-gate-rubric.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/skills/topic-participant/SKILL.md +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/table_render.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/wake_backend.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/cli/worker_cycle_log.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/dependency_links.txt +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/entry_points.txt +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/client.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/config.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/errors.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/exceptions.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/plan_evidence.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/project_config.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/result_template.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_client/testing.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/_utils.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/auth.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/config.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/context.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/main.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/server.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/session.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_sdk/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_sdk/evidence.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/sdk/python/map_types/enums.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/action_items.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/agents.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/audit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/background_tasks.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/common.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/deps.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/experiments.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/feedback.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/notifications.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/projects.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/status.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/topics.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/api/webhooks.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/auth/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/auth/experiment_access.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/config.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/db/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/db/base.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/db/deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/db/session.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/encrypted_types.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/models.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/schemas.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/state_machine.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/domain/topic_ack_constants.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/scripts/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/scripts/migrate_notification_unique.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/scripts/purge_audit_pollution.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/__init__.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/_lookups.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/acceptance_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/action_item_migration_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/action_item_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/agent_work_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/archive_lint_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/audit_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/auth.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/comment_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/errors.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/escalation_resolver.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/evidence_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/experiment_capabilities_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/inbound_event_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/lock_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/log_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/mention_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/notification_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/notification_stream.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/permissions.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/persona_activity_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/phase_owner_resolver.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/phase_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/plan_marker_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/plan_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/platform_feedback_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/project_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/project_status_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/review_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/secret_encryption.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/similarity_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/sse_event_schemas.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/status_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/template_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/text_utils.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/thread_activity.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/todo_persona_filter.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/todo_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_ack_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_action_item_ops.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_comment_kind.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_comment_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_helpers.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_lifecycle_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_progress_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_resolve_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/topic_work_item_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/server/services/webhook_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/setup.cfg +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_18a64691_linkage.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_a2_action_item_cascade.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_accept_result_verdict.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_action_items.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_agent_client.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_agent_work.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_agents_list.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_arch_map_sdk_evidence.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_archive_lint_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_audit_admin_cli.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_audit_admin_filter.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_auth.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_auth_experiment_access.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_authz_cross_persona_capability.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_authz_pr3_creator_gating_extended.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_acceptance.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_action_item_stale.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_endpoints.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_stale.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_stale_notifications.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_b_waker_should_wake_action_item.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_bridge_state.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cleanup_audit_log_no_commit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cleanup_exp_b_paging_seven_endpoints.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cleanup_exp_b_paging_unified_limit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_clear_action_template.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_error_envelope.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_evidence_contract.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_format_priority.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_n2_hard_cutover.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_schema_discovery.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_status.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_template_contract.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cli_work_deprecation.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_cross_persona_call_audit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_docs_inventory.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_fast_gate_whitelist_complete.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_agent_work_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_agents.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_experiment_capabilities_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_experiments_projects.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_mention_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_notification_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_phase_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_project_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_todo_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_comment_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_work_item_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topics.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_typing_extensions_clean.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_uv_lock.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_eng_version_single_source.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_error_codes_cli.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_error_envelope_and_file_options.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_escalation_resolver.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_escalation_target_endpoint.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_evidence_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_capabilities.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_capabilities_whitelist.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_executor.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_fuzz.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_notifications.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_unit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_experiments.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_feedback.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_feedback_admin_cli.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_field_rename_alias.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_inbound_event_rejection.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_local_cache.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_log_create_response.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_m2_flow.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_m3_flow.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_map_sdk_skeleton.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_mcp.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_mcp_http.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_mention_code_skip_unit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_mentions.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_notification_bulk_filter.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_notification_service_v09.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_notification_stream.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_notification_upsert_pr2.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_notifications.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_orchestrator.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_participant_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_perf_count_sql_fixture.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_perf_experiment_summary_bulk.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_perf_topic_comments_bulk.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_perf_work_hotpath_bulk.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_persona_activity.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_persona_compare_partition.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_phase_owner_orm_validation.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_phase_owner_resolver.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_plan_evidence_parser.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_plan_marker_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_plan_revise_auto_archive.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_plan_validate_cli.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_project_config.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_project_export.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_project_status.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_projects.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_rebutted_plan_continues_e2e.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_register_agent_body_model.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_reject_result_misuse.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_resolve_item_sdk_contract.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_resolve_item_status.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_result_template_parser.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_already_archived.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_archived_metadata.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_eligibility.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_item_mutation_audit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_item_state_closed_migration.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_list_archived_filter.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_substitute_and_withdraw.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_review_verdict_alias.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_reviewer_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_runtime_chat.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_same_second_host_reply.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_same_second_trio.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_sdk.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_sdk_exceptions.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_server_lock_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_session_wake_log.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_similarity_api_contract.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_similarity_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_simple_waker.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_simple_waker_pr3_dedup.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_simple_waker_reviewer_filter.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_skill_install.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_sse_acceptance.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_sse_isolation.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_sse_schema_overlap.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_state_machine.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_state_machine_recovery_hint.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_systemd_install.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_template_api_contract.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_template_service.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_todos.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_topic_notifications.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_topic_progress.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_topic_read_cursor.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_topic_work_items.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_topics.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_waker_phase1_acceptance.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_webhook_secret_encryption.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_webhooks_audit.py +0 -0
- {multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/tests/test_work_summary.py +0 -0
{multi_agent_platform-0.3.1/multi_agent_platform.egg-info → multi_agent_platform-0.3.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-agent-platform
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Multi-Agent experiment collaboration platform
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/quantaeye/multi-agent-platform
|
|
@@ -17,19 +17,21 @@ Classifier: Operating System :: OS Independent
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: fastapi<0.116,>=0.115.0
|
|
21
|
-
Requires-Dist: uvicorn[standard]<0.41,>=0.32.0
|
|
22
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.36
|
|
23
|
-
Requires-Dist: alembic<2.0,>=1.14.0
|
|
24
|
-
Requires-Dist: pydantic<2.12,>=2.10.0
|
|
25
|
-
Requires-Dist: pydantic-settings<2.9,>=2.6.0
|
|
26
|
-
Requires-Dist: bcrypt<6.0,>=4.2.0
|
|
27
|
-
Requires-Dist: python-multipart<0.1,>=0.0.17
|
|
28
20
|
Requires-Dist: typer<0.17,>=0.15.0
|
|
29
21
|
Requires-Dist: httpx<0.29,>=0.28.0
|
|
30
22
|
Requires-Dist: pyyaml<7.0,>=6.0
|
|
31
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: pydantic<2.12,>=2.10.0
|
|
24
|
+
Provides-Extra: server
|
|
25
|
+
Requires-Dist: fastapi<0.116,>=0.115.0; extra == "server"
|
|
26
|
+
Requires-Dist: uvicorn[standard]<0.41,>=0.32.0; extra == "server"
|
|
27
|
+
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == "server"
|
|
28
|
+
Requires-Dist: alembic<2.0,>=1.14.0; extra == "server"
|
|
29
|
+
Requires-Dist: pydantic-settings<2.9,>=2.6.0; extra == "server"
|
|
30
|
+
Requires-Dist: bcrypt<6.0,>=4.2.0; extra == "server"
|
|
31
|
+
Requires-Dist: python-multipart<0.1,>=0.0.17; extra == "server"
|
|
32
|
+
Requires-Dist: cryptography<50.0,>=44.0.0; extra == "server"
|
|
32
33
|
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: multi-agent-platform[server]; extra == "dev"
|
|
33
35
|
Requires-Dist: pytest<9.0,>=8.3.0; extra == "dev"
|
|
34
36
|
Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
|
|
35
37
|
Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
|
|
@@ -38,6 +40,7 @@ Requires-Dist: mcp<2.0,>=1.26.0; extra == "dev"
|
|
|
38
40
|
Requires-Dist: ruff<1.0,>=0.8.0; extra == "dev"
|
|
39
41
|
Requires-Dist: pydantic-to-typescript<3.0,>=2.0.0; extra == "dev"
|
|
40
42
|
Provides-Extra: mcp
|
|
43
|
+
Requires-Dist: multi-agent-platform[server]; extra == "mcp"
|
|
41
44
|
Requires-Dist: mcp<2.0,>=1.26.0; extra == "mcp"
|
|
42
45
|
Provides-Extra: codex-runtime
|
|
43
46
|
Provides-Extra: claude-runtime
|
|
@@ -47,18 +50,24 @@ Dynamic: license-file
|
|
|
47
50
|
# Multi-Agent Platform (MAP)
|
|
48
51
|
|
|
49
52
|
[](https://pypi.org/project/multi-agent-platform/)
|
|
50
|
-
[](https://pypi.org/project/multi-agent-platform/)
|
|
51
54
|
[](https://github.com/quantaeye/multi-agent-platform/blob/main/LICENSE)
|
|
52
55
|
|
|
53
56
|
多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
|
|
54
57
|
|
|
55
58
|
## 安装
|
|
56
59
|
|
|
60
|
+
两种安装方式,按需选择:
|
|
61
|
+
|
|
57
62
|
```bash
|
|
63
|
+
# 1. 仅安装 CLI(连接远程 MAP server 时使用,轻量)
|
|
58
64
|
pip install multi-agent-platform
|
|
65
|
+
|
|
66
|
+
# 2. 安装 CLI + Server 依赖(需要本地运行 MAP server 时使用)
|
|
67
|
+
pip install multi-agent-platform-server
|
|
59
68
|
```
|
|
60
69
|
|
|
61
|
-
安装后即可使用 `map` CLI
|
|
70
|
+
安装后即可使用 `map` CLI;安装 server 包后还可使用 `map-server` 命令。详见 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
62
71
|
|
|
63
72
|
**新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
64
73
|
|
|
@@ -124,7 +133,6 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
|
|
|
124
133
|
MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
|
|
125
134
|
|
|
126
135
|
```bash
|
|
127
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
128
136
|
map bootstrap \
|
|
129
137
|
--key multi-agent-platform \
|
|
130
138
|
--name "Multi Agents Platform" \
|
|
@@ -134,18 +142,21 @@ map --persona host persona whoami
|
|
|
134
142
|
map --persona host todos
|
|
135
143
|
```
|
|
136
144
|
|
|
137
|
-
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
|
|
145
|
+
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。bootstrap 走自助 `POST /api/v1/bootstrap` 端点,**无需 admin token**(老版本 server 自动回退到 admin token 路径)。
|
|
138
146
|
|
|
139
147
|
## 快速开始
|
|
140
148
|
|
|
141
149
|
```bash
|
|
142
|
-
# 从 PyPI
|
|
150
|
+
# 从 PyPI 安装(仅 CLI,连接远程 server)
|
|
143
151
|
pip install multi-agent-platform
|
|
144
152
|
|
|
153
|
+
# 或安装 CLI + Server(本地运行 server)
|
|
154
|
+
pip install multi-agent-platform-server
|
|
155
|
+
|
|
145
156
|
# 或从源码开发安装(贡献者)
|
|
146
157
|
pip install -e ".[dev]"
|
|
147
158
|
|
|
148
|
-
#
|
|
159
|
+
# 运行数据库迁移(需要 server 依赖)
|
|
149
160
|
alembic upgrade head
|
|
150
161
|
|
|
151
162
|
# 启动 API 服务
|
|
@@ -225,7 +236,6 @@ cd web && npm install && npm run dev # http://localhost:5173
|
|
|
225
236
|
不依赖 Cursor MCP。每个代码仓库:
|
|
226
237
|
|
|
227
238
|
```bash
|
|
228
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
229
239
|
map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
|
|
230
240
|
map --persona host status # 查看 open_topics
|
|
231
241
|
```
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# Multi-Agent Platform (MAP)
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/multi-agent-platform/)
|
|
4
|
-
[](https://pypi.org/project/multi-agent-platform/)
|
|
5
5
|
[](https://github.com/quantaeye/multi-agent-platform/blob/main/LICENSE)
|
|
6
6
|
|
|
7
7
|
多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
|
|
8
8
|
|
|
9
9
|
## 安装
|
|
10
10
|
|
|
11
|
+
两种安装方式,按需选择:
|
|
12
|
+
|
|
11
13
|
```bash
|
|
14
|
+
# 1. 仅安装 CLI(连接远程 MAP server 时使用,轻量)
|
|
12
15
|
pip install multi-agent-platform
|
|
16
|
+
|
|
17
|
+
# 2. 安装 CLI + Server 依赖(需要本地运行 MAP server 时使用)
|
|
18
|
+
pip install multi-agent-platform-server
|
|
13
19
|
```
|
|
14
20
|
|
|
15
|
-
安装后即可使用 `map` CLI
|
|
21
|
+
安装后即可使用 `map` CLI;安装 server 包后还可使用 `map-server` 命令。详见 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
16
22
|
|
|
17
23
|
**新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
18
24
|
|
|
@@ -78,7 +84,6 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
|
|
|
78
84
|
MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
|
|
79
85
|
|
|
80
86
|
```bash
|
|
81
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
82
87
|
map bootstrap \
|
|
83
88
|
--key multi-agent-platform \
|
|
84
89
|
--name "Multi Agents Platform" \
|
|
@@ -88,18 +93,21 @@ map --persona host persona whoami
|
|
|
88
93
|
map --persona host todos
|
|
89
94
|
```
|
|
90
95
|
|
|
91
|
-
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
|
|
96
|
+
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。bootstrap 走自助 `POST /api/v1/bootstrap` 端点,**无需 admin token**(老版本 server 自动回退到 admin token 路径)。
|
|
92
97
|
|
|
93
98
|
## 快速开始
|
|
94
99
|
|
|
95
100
|
```bash
|
|
96
|
-
# 从 PyPI
|
|
101
|
+
# 从 PyPI 安装(仅 CLI,连接远程 server)
|
|
97
102
|
pip install multi-agent-platform
|
|
98
103
|
|
|
104
|
+
# 或安装 CLI + Server(本地运行 server)
|
|
105
|
+
pip install multi-agent-platform-server
|
|
106
|
+
|
|
99
107
|
# 或从源码开发安装(贡献者)
|
|
100
108
|
pip install -e ".[dev]"
|
|
101
109
|
|
|
102
|
-
#
|
|
110
|
+
# 运行数据库迁移(需要 server 依赖)
|
|
103
111
|
alembic upgrade head
|
|
104
112
|
|
|
105
113
|
# 启动 API 服务
|
|
@@ -179,7 +187,6 @@ cd web && npm install && npm run dev # http://localhost:5173
|
|
|
179
187
|
不依赖 Cursor MCP。每个代码仓库:
|
|
180
188
|
|
|
181
189
|
```bash
|
|
182
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
183
190
|
map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
|
|
184
191
|
map --persona host status # 查看 open_topics
|
|
185
192
|
```
|
|
@@ -18,9 +18,7 @@ from map_sdk.evidence import (
|
|
|
18
18
|
EVIDENCE_METADATA_KEYS,
|
|
19
19
|
metadata_has_completion_evidence,
|
|
20
20
|
)
|
|
21
|
-
|
|
22
|
-
from cli.table_render import enum_value, format_datetime, render_table, short_uuid, truncate
|
|
23
|
-
from server.domain.schemas import (
|
|
21
|
+
from map_types.schemas import (
|
|
24
22
|
ExperimentComplete,
|
|
25
23
|
ExperimentCreate,
|
|
26
24
|
ExperimentLogCreate,
|
|
@@ -30,6 +28,8 @@ from server.domain.schemas import (
|
|
|
30
28
|
ReviewCreate,
|
|
31
29
|
)
|
|
32
30
|
|
|
31
|
+
from cli.table_render import enum_value, format_datetime, render_table, short_uuid, truncate
|
|
32
|
+
|
|
33
33
|
experiment_app = typer.Typer(help="Experiment commands", rich_markup_mode=None)
|
|
34
34
|
lock_app = typer.Typer(help="Experiment execution lock commands (per-project).")
|
|
35
35
|
review_app = typer.Typer(help="Review commands")
|
|
@@ -128,8 +128,9 @@ def experiment_list(
|
|
|
128
128
|
Defaults to a compact table view. Use ``--format yaml`` or
|
|
129
129
|
``--format json`` for full structured output (scripts / piping).
|
|
130
130
|
"""
|
|
131
|
+
from map_types.enums import ExperimentPhase
|
|
132
|
+
|
|
131
133
|
from cli.main import _resolve_project, _run # lazy: avoid cycle
|
|
132
|
-
from server.domain.models import ExperimentPhase
|
|
133
134
|
|
|
134
135
|
def action(c: MAPClient):
|
|
135
136
|
pid = _resolve_project(c, project, project_key)
|
|
@@ -544,7 +545,7 @@ def experiment_archive(
|
|
|
544
545
|
"""
|
|
545
546
|
from cli.main import _require_option_uuid, _run # lazy: avoid cycle
|
|
546
547
|
experiment_id = _require_option_uuid(experiment_id)
|
|
547
|
-
from
|
|
548
|
+
from map_types.schemas import ExperimentUpdate
|
|
548
549
|
|
|
549
550
|
payload = ExperimentUpdate(archived=not (undo or unarchive))
|
|
550
551
|
object_kind = "experiment"
|
|
@@ -760,9 +761,10 @@ def experiment_comment(
|
|
|
760
761
|
body_file: Path | None = typer.Option(None, "--file", help="Read body from a file (avoids shell-quoting issues)."),
|
|
761
762
|
parent: uuid.UUID | None = typer.Option(None, "--parent"),
|
|
762
763
|
) -> None:
|
|
764
|
+
from map_types.enums import CommentAnchorType
|
|
765
|
+
from map_types.schemas import CommentCreate
|
|
766
|
+
|
|
763
767
|
from cli.main import _read_text_file, _run # lazy: avoid cycle
|
|
764
|
-
from server.domain.models import CommentAnchorType
|
|
765
|
-
from server.domain.schemas import CommentCreate
|
|
766
768
|
|
|
767
769
|
if body is None and body_file is None:
|
|
768
770
|
typer.echo("Error: either --body or --file is required", err=True)
|
|
@@ -33,9 +33,9 @@ def feedback_submit(
|
|
|
33
33
|
),
|
|
34
34
|
) -> None:
|
|
35
35
|
from map_types.enums import FeedbackCategory
|
|
36
|
+
from map_types.schemas import PlatformFeedbackCreate
|
|
36
37
|
|
|
37
38
|
from cli.main import _read_text_file, _run # lazy: avoid cli.main ↔ cli.commands.* cycle
|
|
38
|
-
from server.domain.schemas import PlatformFeedbackCreate
|
|
39
39
|
|
|
40
40
|
if body is None and body_file is None:
|
|
41
41
|
typer.echo("Error: either --body or --file is required", err=True)
|
|
@@ -94,9 +94,9 @@ def feedback_update(
|
|
|
94
94
|
archived: bool | None = typer.Option(None, "--archived/--no-archived"),
|
|
95
95
|
) -> None:
|
|
96
96
|
from map_types.enums import FeedbackCategory, FeedbackStatus
|
|
97
|
+
from map_types.schemas import PlatformFeedbackUpdate
|
|
97
98
|
|
|
98
99
|
from cli.main import _run # lazy
|
|
99
|
-
from server.domain.schemas import PlatformFeedbackUpdate
|
|
100
100
|
|
|
101
101
|
payload = PlatformFeedbackUpdate(
|
|
102
102
|
status=FeedbackStatus(status) if status else None,
|
|
@@ -188,9 +188,9 @@ def inbound_event_record(
|
|
|
188
188
|
) -> None:
|
|
189
189
|
"""Record that the caller is about to act on ``event_id``."""
|
|
190
190
|
from map_types.enums import InboundEventSource
|
|
191
|
+
from map_types.schemas import InboundEventCreate
|
|
191
192
|
|
|
192
193
|
from cli.main import _read_text_file, _run
|
|
193
|
-
from server.domain.schemas import InboundEventCreate
|
|
194
194
|
|
|
195
195
|
extra_payload: dict | None = None
|
|
196
196
|
if payload_file is not None:
|
|
@@ -9,8 +9,7 @@ from pathlib import Path
|
|
|
9
9
|
|
|
10
10
|
import typer
|
|
11
11
|
from map_client.client import MAPClient
|
|
12
|
-
|
|
13
|
-
from server.domain.schemas import ProjectStatusRevise
|
|
12
|
+
from map_types.schemas import ProjectStatusRevise
|
|
14
13
|
|
|
15
14
|
project_app = typer.Typer(help="Project commands")
|
|
16
15
|
status_app = typer.Typer(help="Project Current Status commands")
|
|
@@ -124,7 +123,7 @@ def project_export(
|
|
|
124
123
|
from cli.project_export import export_project_history
|
|
125
124
|
|
|
126
125
|
if output_dir is None:
|
|
127
|
-
from cli.main import
|
|
126
|
+
from cli.main import _cli_options, find_map_dir
|
|
128
127
|
map_dir = find_map_dir(_cli_options.get("project_root"))
|
|
129
128
|
if map_dir is not None:
|
|
130
129
|
output_dir = map_dir / "history"
|
|
@@ -10,7 +10,6 @@ from __future__ import annotations
|
|
|
10
10
|
|
|
11
11
|
import json
|
|
12
12
|
import uuid
|
|
13
|
-
from pathlib import Path
|
|
14
13
|
|
|
15
14
|
import typer
|
|
16
15
|
from map_client.client import MAPClient
|
|
@@ -20,8 +19,8 @@ sync_app = typer.Typer(help="Local cache sync commands (offline browsing)")
|
|
|
20
19
|
|
|
21
20
|
def _require_cache_session():
|
|
22
21
|
"""Open the local cache DB, exiting with a helpful hint if .map/ is missing."""
|
|
23
|
-
from cli.
|
|
24
|
-
from cli.
|
|
22
|
+
from cli.local_cache import get_cache_path, init_cache
|
|
23
|
+
from cli.main import _cli_options, find_map_dir
|
|
25
24
|
|
|
26
25
|
map_dir = find_map_dir(_cli_options.get("project_root"))
|
|
27
26
|
if map_dir is None:
|
|
@@ -46,8 +45,8 @@ def sync_pull(
|
|
|
46
45
|
After pulling, you can browse topics and experiments offline using
|
|
47
46
|
`map sync topics` and `map sync topic --id <uuid>`.
|
|
48
47
|
"""
|
|
49
|
-
from cli.main import _resolve_project, _run
|
|
50
48
|
from cli.local_cache import pull_project_to_cache
|
|
49
|
+
from cli.main import _resolve_project, _run
|
|
51
50
|
|
|
52
51
|
map_dir, db_path, session = _require_cache_session()
|
|
53
52
|
|
|
@@ -21,14 +21,14 @@ from typing import Any
|
|
|
21
21
|
|
|
22
22
|
import typer
|
|
23
23
|
from map_client.client import MAPClient
|
|
24
|
-
|
|
25
|
-
from cli.table_render import enum_value, format_datetime, render_table, short_uuid, truncate
|
|
26
|
-
from server.domain.schemas import (
|
|
24
|
+
from map_types.schemas import (
|
|
27
25
|
TopicAdvanceRound,
|
|
28
26
|
TopicCommentCreate,
|
|
29
27
|
TopicUpdate,
|
|
30
28
|
)
|
|
31
29
|
|
|
30
|
+
from cli.table_render import enum_value, format_datetime, render_table, short_uuid, truncate
|
|
31
|
+
|
|
32
32
|
topic_app = typer.Typer(help="Topic commands", rich_markup_mode=None)
|
|
33
33
|
mention_app = typer.Typer(help="Mention todo commands")
|
|
34
34
|
todo_app = typer.Typer(help="Todo partition clear routing (explicit_only buckets)")
|
|
@@ -46,8 +46,9 @@ def topic_create(
|
|
|
46
46
|
project_key: str | None = typer.Option(None, "--project-key"),
|
|
47
47
|
description: str | None = typer.Option(None, "--description"),
|
|
48
48
|
) -> None:
|
|
49
|
+
from map_types.schemas import TopicCreate
|
|
50
|
+
|
|
49
51
|
from cli.main import _resolve_project, _run
|
|
50
|
-
from server.domain.schemas import TopicCreate
|
|
51
52
|
|
|
52
53
|
payload = TopicCreate(title=title, description=description)
|
|
53
54
|
|
|
@@ -102,8 +103,9 @@ def topic_list(
|
|
|
102
103
|
Defaults to a compact table view. Use ``--format yaml`` or
|
|
103
104
|
``--format json`` for full structured output (scripts / piping).
|
|
104
105
|
"""
|
|
106
|
+
from map_types.enums import TopicStatus
|
|
107
|
+
|
|
105
108
|
from cli.main import _resolve_creator_agent_id, _resolve_project, _run
|
|
106
|
-
from server.domain.models import TopicStatus
|
|
107
109
|
|
|
108
110
|
def action(c: MAPClient):
|
|
109
111
|
pid = _resolve_project(c, project, project_key)
|
|
@@ -22,6 +22,8 @@ from map_sdk.evidence import (
|
|
|
22
22
|
EVIDENCE_METADATA_KEYS,
|
|
23
23
|
metadata_has_completion_evidence,
|
|
24
24
|
)
|
|
25
|
+
from map_types.enums import AgentRole
|
|
26
|
+
from map_types.schemas import TopicResolve
|
|
25
27
|
from pydantic import BaseModel, ConfigDict
|
|
26
28
|
|
|
27
29
|
# arch experiment (0519e2a3) PR3/PR5: agent / notification /
|
|
@@ -45,8 +47,6 @@ from cli.commands.skill import skill_app
|
|
|
45
47
|
from cli.commands.sync import sync_app
|
|
46
48
|
from cli.commands.topic import mention_app, todo_app, topic_app
|
|
47
49
|
from cli.e2e_collab import e2e_app
|
|
48
|
-
from server.domain.models import AgentRole
|
|
49
|
-
from server.domain.schemas import TopicResolve
|
|
50
50
|
|
|
51
51
|
app = typer.Typer(name="map", help="Multi-Agent Platform CLI", rich_markup_mode=None)
|
|
52
52
|
# Sub-apps live in cli/commands/*; imported here only to register via
|
|
@@ -4,14 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
## 首次 Bootstrap
|
|
6
6
|
|
|
7
|
-
前置:MAP API
|
|
7
|
+
前置:MAP API 已运行。
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
token: "<admin-api-token>"
|
|
11
|
-
api_url: http://localhost:8001
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
在本代码仓库根目录:
|
|
9
|
+
新版 server(>=0.4)**无需 admin token**——bootstrap 走自助 `POST /api/v1/bootstrap` 端点。直接在本代码仓库根目录运行:
|
|
15
10
|
|
|
16
11
|
```bash
|
|
17
12
|
map bootstrap \
|
|
@@ -20,6 +15,13 @@ map bootstrap \
|
|
|
20
15
|
--api-url http://localhost:8001
|
|
21
16
|
```
|
|
22
17
|
|
|
18
|
+
> **老版本 server 兼容**:若连接的 server 无 `/bootstrap` 端点(<0.4),CLI 自动回退到 admin token 路径。此时需先准备 admin token,写入 `MAP_ADMIN_TOKEN` 或 `~/.map/admin.yaml`:
|
|
19
|
+
>
|
|
20
|
+
> ```yaml
|
|
21
|
+
> token: "<admin-api-token>"
|
|
22
|
+
> api_url: http://localhost:8001
|
|
23
|
+
> ```
|
|
24
|
+
|
|
23
25
|
生成:
|
|
24
26
|
|
|
25
27
|
| 文件 | 提交 Git |
|
|
@@ -45,7 +47,7 @@ bash .cursor/skills/map-project-collab/scripts/map-bootstrap.sh \
|
|
|
45
47
|
| Unknown persona | `map persona list` |
|
|
46
48
|
| 403 开实验 | 确认 `--persona host` 且是话题 creator |
|
|
47
49
|
| 403 submit/approve/complete | 实验须由 **当前 host persona** 创建 |
|
|
48
|
-
| Admin bootstrap 失败 |
|
|
50
|
+
| Admin bootstrap 失败 | 新版 server(>=0.4)无需 admin token;老版本需检查 `MAP_ADMIN_TOKEN` / `~/.map/admin.yaml` |
|
|
49
51
|
| token 丢失(409 跳过) | 保留原 `agents.local.yaml`,或 MAP 删 agent 后重跑 bootstrap |
|
|
50
52
|
| @ 了 agent 无反应 | 查 `map persona list` 用 agent_name;看评论 `unresolved_mentions` 或 `mention.unresolved` 通知 |
|
|
51
53
|
| 想改 MAP 平台而非业务话题 | 用 `map feedback submit --category suggestion`(见 SKILL.md §平台反馈) |
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Bootstrap MAP for the current git repo. New server (>=0.4) needs no admin token;
|
|
3
|
+
# falls back to MAP_ADMIN_TOKEN / ~/.map/admin.yaml on older servers.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
ROOT="$(cd "$(dirname "$0")/../../../.." && pwd)"
|
|
6
|
+
cd "$ROOT"
|
|
7
|
+
exec map bootstrap "$@"
|
{multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2/multi_agent_platform.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-agent-platform
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Multi-Agent experiment collaboration platform
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/quantaeye/multi-agent-platform
|
|
@@ -17,19 +17,21 @@ Classifier: Operating System :: OS Independent
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: fastapi<0.116,>=0.115.0
|
|
21
|
-
Requires-Dist: uvicorn[standard]<0.41,>=0.32.0
|
|
22
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.36
|
|
23
|
-
Requires-Dist: alembic<2.0,>=1.14.0
|
|
24
|
-
Requires-Dist: pydantic<2.12,>=2.10.0
|
|
25
|
-
Requires-Dist: pydantic-settings<2.9,>=2.6.0
|
|
26
|
-
Requires-Dist: bcrypt<6.0,>=4.2.0
|
|
27
|
-
Requires-Dist: python-multipart<0.1,>=0.0.17
|
|
28
20
|
Requires-Dist: typer<0.17,>=0.15.0
|
|
29
21
|
Requires-Dist: httpx<0.29,>=0.28.0
|
|
30
22
|
Requires-Dist: pyyaml<7.0,>=6.0
|
|
31
|
-
Requires-Dist:
|
|
23
|
+
Requires-Dist: pydantic<2.12,>=2.10.0
|
|
24
|
+
Provides-Extra: server
|
|
25
|
+
Requires-Dist: fastapi<0.116,>=0.115.0; extra == "server"
|
|
26
|
+
Requires-Dist: uvicorn[standard]<0.41,>=0.32.0; extra == "server"
|
|
27
|
+
Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == "server"
|
|
28
|
+
Requires-Dist: alembic<2.0,>=1.14.0; extra == "server"
|
|
29
|
+
Requires-Dist: pydantic-settings<2.9,>=2.6.0; extra == "server"
|
|
30
|
+
Requires-Dist: bcrypt<6.0,>=4.2.0; extra == "server"
|
|
31
|
+
Requires-Dist: python-multipart<0.1,>=0.0.17; extra == "server"
|
|
32
|
+
Requires-Dist: cryptography<50.0,>=44.0.0; extra == "server"
|
|
32
33
|
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: multi-agent-platform[server]; extra == "dev"
|
|
33
35
|
Requires-Dist: pytest<9.0,>=8.3.0; extra == "dev"
|
|
34
36
|
Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
|
|
35
37
|
Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
|
|
@@ -38,6 +40,7 @@ Requires-Dist: mcp<2.0,>=1.26.0; extra == "dev"
|
|
|
38
40
|
Requires-Dist: ruff<1.0,>=0.8.0; extra == "dev"
|
|
39
41
|
Requires-Dist: pydantic-to-typescript<3.0,>=2.0.0; extra == "dev"
|
|
40
42
|
Provides-Extra: mcp
|
|
43
|
+
Requires-Dist: multi-agent-platform[server]; extra == "mcp"
|
|
41
44
|
Requires-Dist: mcp<2.0,>=1.26.0; extra == "mcp"
|
|
42
45
|
Provides-Extra: codex-runtime
|
|
43
46
|
Provides-Extra: claude-runtime
|
|
@@ -47,18 +50,24 @@ Dynamic: license-file
|
|
|
47
50
|
# Multi-Agent Platform (MAP)
|
|
48
51
|
|
|
49
52
|
[](https://pypi.org/project/multi-agent-platform/)
|
|
50
|
-
[](https://pypi.org/project/multi-agent-platform/)
|
|
51
54
|
[](https://github.com/quantaeye/multi-agent-platform/blob/main/LICENSE)
|
|
52
55
|
|
|
53
56
|
多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
|
|
54
57
|
|
|
55
58
|
## 安装
|
|
56
59
|
|
|
60
|
+
两种安装方式,按需选择:
|
|
61
|
+
|
|
57
62
|
```bash
|
|
63
|
+
# 1. 仅安装 CLI(连接远程 MAP server 时使用,轻量)
|
|
58
64
|
pip install multi-agent-platform
|
|
65
|
+
|
|
66
|
+
# 2. 安装 CLI + Server 依赖(需要本地运行 MAP server 时使用)
|
|
67
|
+
pip install multi-agent-platform-server
|
|
59
68
|
```
|
|
60
69
|
|
|
61
|
-
安装后即可使用 `map` CLI
|
|
70
|
+
安装后即可使用 `map` CLI;安装 server 包后还可使用 `map-server` 命令。详见 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
62
71
|
|
|
63
72
|
**新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
64
73
|
|
|
@@ -124,7 +133,6 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
|
|
|
124
133
|
MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
|
|
125
134
|
|
|
126
135
|
```bash
|
|
127
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
128
136
|
map bootstrap \
|
|
129
137
|
--key multi-agent-platform \
|
|
130
138
|
--name "Multi Agents Platform" \
|
|
@@ -134,18 +142,21 @@ map --persona host persona whoami
|
|
|
134
142
|
map --persona host todos
|
|
135
143
|
```
|
|
136
144
|
|
|
137
|
-
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
|
|
145
|
+
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。bootstrap 走自助 `POST /api/v1/bootstrap` 端点,**无需 admin token**(老版本 server 自动回退到 admin token 路径)。
|
|
138
146
|
|
|
139
147
|
## 快速开始
|
|
140
148
|
|
|
141
149
|
```bash
|
|
142
|
-
# 从 PyPI
|
|
150
|
+
# 从 PyPI 安装(仅 CLI,连接远程 server)
|
|
143
151
|
pip install multi-agent-platform
|
|
144
152
|
|
|
153
|
+
# 或安装 CLI + Server(本地运行 server)
|
|
154
|
+
pip install multi-agent-platform-server
|
|
155
|
+
|
|
145
156
|
# 或从源码开发安装(贡献者)
|
|
146
157
|
pip install -e ".[dev]"
|
|
147
158
|
|
|
148
|
-
#
|
|
159
|
+
# 运行数据库迁移(需要 server 依赖)
|
|
149
160
|
alembic upgrade head
|
|
150
161
|
|
|
151
162
|
# 启动 API 服务
|
|
@@ -225,7 +236,6 @@ cd web && npm install && npm run dev # http://localhost:5173
|
|
|
225
236
|
不依赖 Cursor MCP。每个代码仓库:
|
|
226
237
|
|
|
227
238
|
```bash
|
|
228
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
229
239
|
map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
|
|
230
240
|
map --persona host status # 查看 open_topics
|
|
231
241
|
```
|
{multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/SOURCES.txt
RENAMED
|
@@ -89,6 +89,7 @@ server/api/action_items.py
|
|
|
89
89
|
server/api/agents.py
|
|
90
90
|
server/api/audit.py
|
|
91
91
|
server/api/background_tasks.py
|
|
92
|
+
server/api/bootstrap.py
|
|
92
93
|
server/api/common.py
|
|
93
94
|
server/api/deps.py
|
|
94
95
|
server/api/experiments.py
|
|
@@ -123,6 +124,7 @@ server/services/agent_work_service.py
|
|
|
123
124
|
server/services/archive_lint_service.py
|
|
124
125
|
server/services/audit_service.py
|
|
125
126
|
server/services/auth.py
|
|
127
|
+
server/services/bootstrap_service.py
|
|
126
128
|
server/services/comment_service.py
|
|
127
129
|
server/services/errors.py
|
|
128
130
|
server/services/escalation_resolver.py
|
|
@@ -185,6 +187,7 @@ tests/test_b_action_item_wake_endpoints.py
|
|
|
185
187
|
tests/test_b_action_item_wake_stale.py
|
|
186
188
|
tests/test_b_action_item_wake_stale_notifications.py
|
|
187
189
|
tests/test_b_waker_should_wake_action_item.py
|
|
190
|
+
tests/test_bootstrap.py
|
|
188
191
|
tests/test_bridge_state.py
|
|
189
192
|
tests/test_cleanup_audit_log_no_commit.py
|
|
190
193
|
tests/test_cleanup_exp_b_paging_seven_endpoints.py
|
{multi_agent_platform-0.3.1 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/requires.txt
RENAMED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
fastapi<0.116,>=0.115.0
|
|
2
|
-
uvicorn[standard]<0.41,>=0.32.0
|
|
3
|
-
sqlalchemy<2.1,>=2.0.36
|
|
4
|
-
alembic<2.0,>=1.14.0
|
|
5
|
-
pydantic<2.12,>=2.10.0
|
|
6
|
-
pydantic-settings<2.9,>=2.6.0
|
|
7
|
-
bcrypt<6.0,>=4.2.0
|
|
8
|
-
python-multipart<0.1,>=0.0.17
|
|
9
1
|
typer<0.17,>=0.15.0
|
|
10
2
|
httpx<0.29,>=0.28.0
|
|
11
3
|
pyyaml<7.0,>=6.0
|
|
12
|
-
|
|
4
|
+
pydantic<2.12,>=2.10.0
|
|
13
5
|
|
|
14
6
|
[claude-runtime]
|
|
15
7
|
claude-agent-sdk<1.0,>=0.2
|
|
@@ -17,6 +9,7 @@ claude-agent-sdk<1.0,>=0.2
|
|
|
17
9
|
[codex-runtime]
|
|
18
10
|
|
|
19
11
|
[dev]
|
|
12
|
+
multi-agent-platform[server]
|
|
20
13
|
pytest<9.0,>=8.3.0
|
|
21
14
|
pytest-asyncio<1.0,>=0.24.0
|
|
22
15
|
pytest-cov<7.0,>=5.0.0
|
|
@@ -26,4 +19,15 @@ ruff<1.0,>=0.8.0
|
|
|
26
19
|
pydantic-to-typescript<3.0,>=2.0.0
|
|
27
20
|
|
|
28
21
|
[mcp]
|
|
22
|
+
multi-agent-platform[server]
|
|
29
23
|
mcp<2.0,>=1.26.0
|
|
24
|
+
|
|
25
|
+
[server]
|
|
26
|
+
fastapi<0.116,>=0.115.0
|
|
27
|
+
uvicorn[standard]<0.41,>=0.32.0
|
|
28
|
+
sqlalchemy<2.1,>=2.0.36
|
|
29
|
+
alembic<2.0,>=1.14.0
|
|
30
|
+
pydantic-settings<2.9,>=2.6.0
|
|
31
|
+
bcrypt<6.0,>=4.2.0
|
|
32
|
+
python-multipart<0.1,>=0.0.17
|
|
33
|
+
cryptography<50.0,>=44.0.0
|