multi-agent-platform 0.3.0__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.0/multi_agent_platform.egg-info → multi_agent_platform-0.3.2}/PKG-INFO +72 -80
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/README.md +57 -69
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/agent_client.py +15 -4
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/experiment.py +37 -10
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/feedback.py +2 -2
- multi_agent_platform-0.3.2/cli/commands/host.py +150 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/notification.py +1 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/project.py +2 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/runtime.py +1 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/skill.py +53 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/sync.py +3 -4
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/topic.py +55 -8
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/e2e_collab.py +2 -2
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/main.py +112 -7
- multi_agent_platform-0.3.2/cli/orchestrator.py +240 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/runtime_chat.py +1 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/simple_waker.py +1 -2
- multi_agent_platform-0.3.2/cli/skills/experiment-host/SKILL.md +213 -0
- multi_agent_platform-0.3.2/cli/skills/experiment-host/references/lifecycle-transitions.md +102 -0
- multi_agent_platform-0.3.2/cli/skills/experiment-reviewer/SKILL.md +121 -0
- multi_agent_platform-0.3.2/cli/skills/experiment-reviewer/references/review-format-guide.md +59 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/skills/map-project-collab/SKILL.md +100 -46
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/references/bootstrap-troubleshooting.md +92 -0
- multi_agent_platform-0.3.0/cli/skills/map-runtime-waker/SKILL.md → multi_agent_platform-0.3.2/cli/skills/map-project-collab/references/waker-mode.md +17 -41
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/scripts/map-bootstrap.sh +7 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/skills/topic-host/SKILL.md +109 -95
- multi_agent_platform-0.3.2/cli/skills/topic-host/references/experiment-gate-rubric.md +130 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/skills/topic-participant/SKILL.md +49 -6
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2/multi_agent_platform.egg-info}/PKG-INFO +72 -80
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/SOURCES.txt +13 -2
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/requires.txt +13 -9
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/top_level.txt +1 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/pyproject.toml +23 -16
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/bootstrap.py +148 -2
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/client.py +39 -4
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/server.py +14 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_sdk/__init__.py +1 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_types/__init__.py +3 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_types/enums.py +37 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_types/schemas.py +65 -5
- {multi_agent_platform-0.3.0 → 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.0 → multi_agent_platform-0.3.2}/server/api/experiments.py +14 -2
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/router.py +2 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/topics.py +42 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/models.py +25 -4
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/main.py +2 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/agent_work_service.py +1 -1
- multi_agent_platform-0.3.2/server/services/bootstrap_service.py +129 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/mention_service.py +1 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/notification_service.py +1 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/phase_service.py +132 -25
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_ack_service.py +4 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_comment_service.py +9 -1
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_lifecycle_service.py +147 -13
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_service.py +2 -0
- multi_agent_platform-0.3.2/tests/test_bootstrap.py +152 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_typing_extensions_clean.py +26 -22
- multi_agent_platform-0.3.2/tests/test_experiment_executor.py +484 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_local_cache.py +1 -2
- multi_agent_platform-0.3.2/tests/test_orchestrator.py +408 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_project_export.py +1 -2
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_sdk.py +3 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_skill_install.py +72 -3
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_topics.py +254 -8
- multi_agent_platform-0.3.0/cli/skills/experiment-host/SKILL.md +0 -223
- multi_agent_platform-0.3.0/cli/skills/experiment-reviewer/SKILL.md +0 -108
- multi_agent_platform-0.3.0/cli/skills/map-project-collab/scripts/map-bootstrap.sh +0 -6
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/LICENSE +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/action_item_escalation.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/bridge_state.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/action.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/agent.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/audit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/docs.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/commands/persona.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/host_worker_types.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/local_cache.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/map_command_client.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/participant_worker.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/project_export.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/reviewer_worker.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/runtime/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/runtime/run_lock.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/session_wake_log.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/skills/__init__.py +0 -0
- {multi_agent_platform-0.3.0/cli/skills/map-runtime-waker → multi_agent_platform-0.3.2/cli/skills/map-project-collab}/agents/openai.yaml +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/table_render.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/wake_backend.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/cli/worker_cycle_log.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/dependency_links.txt +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/multi_agent_platform.egg-info/entry_points.txt +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/config.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/errors.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/exceptions.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/plan_evidence.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/project_config.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/result_template.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_client/testing.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/_utils.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/auth.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/config.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/context.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/main.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_mcp/session.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/sdk/python/map_sdk/evidence.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/action_items.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/agents.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/audit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/background_tasks.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/common.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/deps.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/feedback.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/notifications.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/projects.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/status.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/api/webhooks.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/auth/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/auth/experiment_access.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/config.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/db/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/db/base.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/db/deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/db/session.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/encrypted_types.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/schemas.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/state_machine.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/domain/topic_ack_constants.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/scripts/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/scripts/migrate_notification_unique.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/scripts/purge_audit_pollution.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/__init__.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/_lookups.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/acceptance_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/action_item_migration_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/action_item_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/archive_lint_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/audit_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/auth.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/comment_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/errors.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/escalation_resolver.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/evidence_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/experiment_capabilities_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/inbound_event_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/lock_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/log_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/notification_stream.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/permissions.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/persona_activity_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/phase_owner_resolver.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/plan_marker_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/plan_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/platform_feedback_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/project_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/project_status_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/review_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/secret_encryption.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/similarity_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/sse_event_schemas.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/status_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/template_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/text_utils.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/thread_activity.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/todo_persona_filter.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/todo_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_action_item_ops.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_comment_kind.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_helpers.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_progress_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_resolve_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/topic_work_item_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/server/services/webhook_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/setup.cfg +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_18a64691_linkage.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_a2_action_item_cascade.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_accept_result_verdict.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_action_items.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_agent_client.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_agent_work.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_agents_list.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_arch_map_sdk_evidence.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_archive_lint_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_audit_admin_cli.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_audit_admin_filter.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_auth.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_auth_experiment_access.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_authz_cross_persona_capability.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_authz_pr3_creator_gating_extended.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_acceptance.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_action_item_stale.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_endpoints.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_stale.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_action_item_wake_stale_notifications.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_b_waker_should_wake_action_item.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_bridge_state.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cleanup_audit_log_no_commit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cleanup_exp_b_paging_seven_endpoints.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cleanup_exp_b_paging_unified_limit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_clear_action_template.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_error_envelope.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_evidence_contract.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_format_priority.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_n2_hard_cutover.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_schema_discovery.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_status.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_template_contract.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cli_work_deprecation.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_cross_persona_call_audit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_docs_inventory.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_fast_gate_whitelist_complete.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_agent_work_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_agents.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_experiment_capabilities_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_experiments_projects.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_mention_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_notification_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_phase_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_project_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_todo_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_comment_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topic_work_item_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_mypy_strict_topics.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_uv_lock.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_eng_version_single_source.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_error_codes_cli.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_error_envelope_and_file_options.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_escalation_resolver.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_escalation_target_endpoint.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_evidence_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiment_capabilities.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiment_capabilities_whitelist.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_fuzz.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_notifications.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiment_lock_unit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_experiments.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_feedback.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_feedback_admin_cli.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_field_rename_alias.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_inbound_event_rejection.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_log_create_response.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_m2_flow.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_m3_flow.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_map_sdk_skeleton.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_mcp.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_mcp_http.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_mention_code_skip_unit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_mentions.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_notification_bulk_filter.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_notification_service_v09.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_notification_stream.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_notification_upsert_pr2.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_notifications.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_participant_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_perf_count_sql_fixture.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_perf_experiment_summary_bulk.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_perf_topic_comments_bulk.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_perf_work_hotpath_bulk.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_persona_activity.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_persona_compare_partition.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_phase_owner_orm_validation.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_phase_owner_resolver.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_plan_evidence_parser.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_plan_marker_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_plan_revise_auto_archive.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_plan_validate_cli.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_project_config.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_project_status.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_projects.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_rebutted_plan_continues_e2e.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_register_agent_body_model.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_reject_result_misuse.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_resolve_item_sdk_contract.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_resolve_item_status.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_result_template_parser.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_already_archived.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_archived_metadata.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_eligibility.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_item_mutation_audit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_item_state_closed_migration.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_list_archived_filter.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_substitute_and_withdraw.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_review_verdict_alias.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_reviewer_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_runtime_chat.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_same_second_host_reply.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_same_second_trio.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_sdk_exceptions.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_server_lock_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_session_wake_log.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_similarity_api_contract.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_similarity_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_simple_waker.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_simple_waker_pr3_dedup.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_simple_waker_reviewer_filter.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_sse_acceptance.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_sse_isolation.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_sse_schema_overlap.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_state_machine.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_state_machine_recovery_hint.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_systemd_install.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_template_api_contract.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_template_service.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_todos.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_topic_notifications.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_topic_progress.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_topic_read_cursor.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_topic_work_items.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_waker_phase1_acceptance.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_webhook_secret_encryption.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_webhooks_audit.py +0 -0
- {multi_agent_platform-0.3.0 → multi_agent_platform-0.3.2}/tests/test_work_summary.py +0 -0
{multi_agent_platform-0.3.0/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
|
|
@@ -9,26 +9,29 @@ Project-URL: Repository, https://github.com/quantaeye/multi-agent-platform
|
|
|
9
9
|
Project-URL: Issues, https://github.com/quantaeye/multi-agent-platform/issues
|
|
10
10
|
Classifier: Development Status :: 4 - Beta
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
15
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
16
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.10
|
|
17
18
|
Description-Content-Type: text/markdown
|
|
18
19
|
License-File: LICENSE
|
|
19
|
-
Requires-Dist: fastapi<0.116,>=0.115.0
|
|
20
|
-
Requires-Dist: uvicorn[standard]<0.41,>=0.32.0
|
|
21
|
-
Requires-Dist: sqlalchemy<2.1,>=2.0.36
|
|
22
|
-
Requires-Dist: alembic<2.0,>=1.14.0
|
|
23
|
-
Requires-Dist: pydantic<2.12,>=2.10.0
|
|
24
|
-
Requires-Dist: pydantic-settings<2.9,>=2.6.0
|
|
25
|
-
Requires-Dist: bcrypt<6.0,>=4.2.0
|
|
26
|
-
Requires-Dist: python-multipart<0.1,>=0.0.17
|
|
27
20
|
Requires-Dist: typer<0.17,>=0.15.0
|
|
28
21
|
Requires-Dist: httpx<0.29,>=0.28.0
|
|
29
22
|
Requires-Dist: pyyaml<7.0,>=6.0
|
|
30
|
-
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"
|
|
31
33
|
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: multi-agent-platform[server]; extra == "dev"
|
|
32
35
|
Requires-Dist: pytest<9.0,>=8.3.0; extra == "dev"
|
|
33
36
|
Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
|
|
34
37
|
Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
|
|
@@ -37,6 +40,7 @@ Requires-Dist: mcp<2.0,>=1.26.0; extra == "dev"
|
|
|
37
40
|
Requires-Dist: ruff<1.0,>=0.8.0; extra == "dev"
|
|
38
41
|
Requires-Dist: pydantic-to-typescript<3.0,>=2.0.0; extra == "dev"
|
|
39
42
|
Provides-Extra: mcp
|
|
43
|
+
Requires-Dist: multi-agent-platform[server]; extra == "mcp"
|
|
40
44
|
Requires-Dist: mcp<2.0,>=1.26.0; extra == "mcp"
|
|
41
45
|
Provides-Extra: codex-runtime
|
|
42
46
|
Provides-Extra: claude-runtime
|
|
@@ -46,18 +50,24 @@ Dynamic: license-file
|
|
|
46
50
|
# Multi-Agent Platform (MAP)
|
|
47
51
|
|
|
48
52
|
[](https://pypi.org/project/multi-agent-platform/)
|
|
49
|
-
[](https://pypi.org/project/multi-agent-platform/)
|
|
50
54
|
[](https://github.com/quantaeye/multi-agent-platform/blob/main/LICENSE)
|
|
51
55
|
|
|
52
56
|
多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
|
|
53
57
|
|
|
54
58
|
## 安装
|
|
55
59
|
|
|
60
|
+
两种安装方式,按需选择:
|
|
61
|
+
|
|
56
62
|
```bash
|
|
63
|
+
# 1. 仅安装 CLI(连接远程 MAP server 时使用,轻量)
|
|
57
64
|
pip install multi-agent-platform
|
|
65
|
+
|
|
66
|
+
# 2. 安装 CLI + Server 依赖(需要本地运行 MAP server 时使用)
|
|
67
|
+
pip install multi-agent-platform-server
|
|
58
68
|
```
|
|
59
69
|
|
|
60
|
-
安装后即可使用 `map` CLI
|
|
70
|
+
安装后即可使用 `map` CLI;安装 server 包后还可使用 `map-server` 命令。详见 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
61
71
|
|
|
62
72
|
**新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
|
|
63
73
|
|
|
@@ -69,10 +79,10 @@ pip install multi-agent-platform
|
|
|
69
79
|
|
|
70
80
|
```bash
|
|
71
81
|
pip install multi-agent-platform
|
|
72
|
-
map skill install # 将
|
|
82
|
+
map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
|
|
73
83
|
```
|
|
74
84
|
|
|
75
|
-
安装后 Cursor 会自动发现 Skill,AI Agent 读取后即可遵循完整的 MAP
|
|
85
|
+
安装后 Cursor 会自动发现 Skill,AI Agent 读取后即可遵循完整的 MAP 协作流程(含讨论门禁(默认两轮,可伸缩)、实验生命周期等)。
|
|
76
86
|
|
|
77
87
|
**方式二:使用简化 Prompt(快速上手)**
|
|
78
88
|
|
|
@@ -80,71 +90,41 @@ map skill install # 将 6 个 Skill 文件安装到 .cursor/skills/
|
|
|
80
90
|
|
|
81
91
|
## 文档
|
|
82
92
|
|
|
93
|
+
- [文档总入口](docs/INDEX.md)
|
|
83
94
|
- [MAP Agent Prompt(给 AI Agent 的协作指南)](MAP_AGENT_PROMPT.md)
|
|
84
95
|
- [Quick Start 指南(新用户必读)](docs/QUICKSTART.md)
|
|
85
|
-
- [
|
|
86
|
-
- [产品需求文档 v0.2(角色与项目边界)](docs/prd/archive/v0.2.md)
|
|
87
|
-
- [产品需求文档 v0.3(话题独立、UI 写闭环、待办与通知)](docs/prd/archive/v0.3.md)
|
|
88
|
-
- [产品需求文档 v0.4(站内收件箱、@提及、计划 diff、话题置顶)](docs/prd/archive/v0.4.md)
|
|
89
|
-
- [产品需求文档 v0.5(主持待办 pending_topic_replies、topic-host Skill)](docs/prd/archive/v0.5.md)
|
|
90
|
-
- [产品需求文档 v0.6(列表归档、独立列表页、通知 SSE)](docs/prd/archive/v0.6.md)
|
|
91
|
-
- [产品需求文档 v0.9 草案(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
|
|
92
|
-
- [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
|
|
93
|
-
- [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
|
|
96
|
+
- [CLI 指南](docs/CLI.md)
|
|
94
97
|
- [架构设计](docs/ARCHITECTURE.md)
|
|
95
98
|
- [Python SDK 指南](docs/SDK.md)
|
|
96
99
|
- [MCP Server 指南(stdio)](docs/MCP.md)
|
|
100
|
+
- [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
|
|
101
|
+
- [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
|
|
102
|
+
- [Persona 行为差异](docs/MAP-PERSONA-COMPARE.md)
|
|
103
|
+
- [Web 端 Agent UI 视图](docs/UI-AGENTS.md)
|
|
104
|
+
- [证据元数据契约](docs/MAP-EVIDENCE-METADATA.md)
|
|
105
|
+
- [错误码清单](docs/MAP-ERROR-CODES.md)
|
|
97
106
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
**M1 已完成**:数据模型、Alembic 迁移、Projects/Experiments CRUD REST API。
|
|
101
|
-
**M2 已完成**:Plans 修订、Reviews、Comments、实验阶段与不合理项状态机。
|
|
102
|
-
**M3 已完成**:实验日志、Start/Complete、全局 Status API、CLI(`map` 命令)。
|
|
103
|
-
**M4 已完成**:React + Vite Web UI(看板、项目、实验话题页)。
|
|
104
|
-
**M5 已完成**:Python SDK(`map_client`)、SDK 文档、CLI 基于 SDK 重构、Docker 部署。
|
|
105
|
-
**M6 已完成**:MCP stdio + HTTP 服务(`map-mcp`),供 IDE Agent 调用。
|
|
106
|
-
**M7 已完成**:项目角色边界(`project_key`、Agent 项目绑定、权限门控、Status MD v1)。
|
|
107
|
-
**M8 已完成**:项目 Current Status MD 版本化(修订 API、历史查询、CLI/MCP)。
|
|
108
|
-
|
|
109
|
-
**v0.3 已完成(M11–M14)**:
|
|
110
|
-
|
|
111
|
-
- **M11**:话题(Topic)独立实体 + 评论树 + 实验↔话题可选关联 + Alembic 迁移 + CLI/SDK/MCP 适配。
|
|
112
|
-
- **M12**:Web UI 写操作闭环——发布话题/实验、修订计划、提交评审、追加日志、撤回/取消/编辑、通用讨论;新增话题详情页。
|
|
113
|
-
- **M13**:Agent 待办视图(`GET /agents/me/todos`)+ 实验列表筛选/分页/搜索(`q`/`creator`/`page` + `X-Total-Count` header)。
|
|
114
|
-
- **M14**:Webhook 出站通知(HMAC 签名 + 投递记录 + Admin CRUD)+ 审计日志(关键写操作打点 + 对象/全局查询)。
|
|
115
|
-
|
|
116
|
-
详见 [PRD v0.3](docs/prd/archive/v0.3.md)。
|
|
117
|
-
|
|
118
|
-
**v0.4 已完成(M15–M18)**:
|
|
119
|
-
|
|
120
|
-
- **M15**:站内通知收件箱(`notifications` 表 + 统一事件扇出 + API/Web/CLI/SDK/MCP)。
|
|
121
|
-
- **M16**:评论 `@提及` → 待办 `mentions` 分区 + 定向通知。
|
|
122
|
-
- **M17**:实验页计划版本 diff 只读视图(`PlanDiffView`)。
|
|
123
|
-
- **M18**:话题置顶(`topics.pinned` + 列表优先排序)。
|
|
124
|
-
|
|
125
|
-
详见 [PRD v0.4](docs/prd/archive/v0.4.md)。
|
|
126
|
-
|
|
127
|
-
**v0.5 已完成(M19–M21)**:
|
|
128
|
-
|
|
129
|
-
- **M19**:`GET /agents/me/todos` 新增 `pending_topic_replies`(话题主持 thread 级待回复)。
|
|
130
|
-
- **M20**:topic-host Skill(`.cursor/skills/topic-host/SKILL.md`)。
|
|
131
|
-
- **M21**:Webhook 主持接线文档([WEBHOOK-TOPIC-HOST.md](docs/WEBHOOK-TOPIC-HOST.md))。
|
|
107
|
+
### PRD
|
|
132
108
|
|
|
133
|
-
|
|
109
|
+
- [现行草案:v0.9(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
|
|
110
|
+
- [归档:v0.1 / v0.2 / v0.3 / v0.4 / v0.5 / v0.6](docs/prd/archive/)
|
|
111
|
+
- [占位:v0.7 / v0.8(未单独成稿)](docs/prd/archive/v0.7.md)
|
|
134
112
|
|
|
135
|
-
|
|
113
|
+
## 状态
|
|
136
114
|
|
|
137
|
-
|
|
138
|
-
- **M23**:Web 独立列表页(`/projects/:id/topics`、`/experiments`)+ `client.ts` vitest。
|
|
139
|
-
- **M24**:站内通知 **SSE**(`GET /agents/me/notifications/stream`)+ Web 实时 invalidate。
|
|
115
|
+
**稳定能力**:
|
|
140
116
|
|
|
141
|
-
|
|
117
|
+
- **实验生命周期**:计划修订、评审、执行日志、结果审批、状态机
|
|
118
|
+
- **话题协作**:独立话题 + 评论树 + @提及 + 多轮讨论 + Round Summary + 结论与行动项
|
|
119
|
+
- **待办与通知**:Agent 待办视图 + 站内通知 + SSE 实时推送 + Webhook 出站
|
|
120
|
+
- **Web UI**:React + Vite 看板 / 话题 / 实验详情,写操作闭环
|
|
121
|
+
- **多入口接入**:Python SDK + `map` CLI + MCP stdio/HTTP(`map-mcp`)
|
|
122
|
+
- **Agent Runtime**:simple-waker 默认路径(轮询 + remind + action_item 升级)
|
|
123
|
+
- **多 persona 协作**:`.map/` persona + Skill 指导 Agent 写回 MAP
|
|
142
124
|
|
|
143
|
-
|
|
125
|
+
**当前主线**:v0.9 草案(waker Phase 2 通知降噪)。详见 [PRD v0.9](docs/prd/v0.9.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
|
|
144
126
|
|
|
145
|
-
|
|
146
|
-
- CLI:`map topic resolve --id <topic-id> --file decision.md|decision.yaml`、`map project decisions`、`map action list --mine`。
|
|
147
|
-
- Web:话题详情页展示/修订结论,项目页展示最近结论,待办页展示分配给当前 Agent 的行动项。
|
|
127
|
+
历史里程碑详见 PRD 归档:[v0.1–v0.6](docs/prd/archive/) · [占位 v0.7 / v0.8](docs/prd/archive/v0.7.md)。
|
|
148
128
|
|
|
149
129
|
**Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
|
|
150
130
|
|
|
@@ -153,7 +133,6 @@ map skill install # 将 6 个 Skill 文件安装到 .cursor/skills/
|
|
|
153
133
|
MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
|
|
154
134
|
|
|
155
135
|
```bash
|
|
156
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
157
136
|
map bootstrap \
|
|
158
137
|
--key multi-agent-platform \
|
|
159
138
|
--name "Multi Agents Platform" \
|
|
@@ -163,18 +142,21 @@ map --persona host persona whoami
|
|
|
163
142
|
map --persona host todos
|
|
164
143
|
```
|
|
165
144
|
|
|
166
|
-
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
|
|
145
|
+
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。bootstrap 走自助 `POST /api/v1/bootstrap` 端点,**无需 admin token**(老版本 server 自动回退到 admin token 路径)。
|
|
167
146
|
|
|
168
147
|
## 快速开始
|
|
169
148
|
|
|
170
149
|
```bash
|
|
171
|
-
# 从 PyPI
|
|
150
|
+
# 从 PyPI 安装(仅 CLI,连接远程 server)
|
|
172
151
|
pip install multi-agent-platform
|
|
173
152
|
|
|
153
|
+
# 或安装 CLI + Server(本地运行 server)
|
|
154
|
+
pip install multi-agent-platform-server
|
|
155
|
+
|
|
174
156
|
# 或从源码开发安装(贡献者)
|
|
175
157
|
pip install -e ".[dev]"
|
|
176
158
|
|
|
177
|
-
#
|
|
159
|
+
# 运行数据库迁移(需要 server 依赖)
|
|
178
160
|
alembic upgrade head
|
|
179
161
|
|
|
180
162
|
# 启动 API 服务
|
|
@@ -212,9 +194,19 @@ map topic archive --id <topic-id> # v0.7 P3:归档(薄包装 P
|
|
|
212
194
|
map topic archive --id <topic-id> --undo # 反归档(--unarchive 同义)
|
|
213
195
|
map experiment archive --id <exp-id> # 归档实验
|
|
214
196
|
map topic comment --id <topic-id> --file comment.md
|
|
215
|
-
map topic
|
|
197
|
+
map topic comment --id <topic-id> --body "..." --round-summary # 标记 Round Summary(触发 ack 流)
|
|
198
|
+
map topic advance-round --id <topic-id> # roundN → roundN+1
|
|
199
|
+
map topic advance-round --id <topic-id> --ready # 标记 ready(可开实验)
|
|
200
|
+
map topic advance-round --id <topic-id> --ack accept|reject|dismiss # participant 表态
|
|
201
|
+
map topic advance-round --id <topic-id> --waive-ack --waive-reason "参与者离线,结论已收敛"
|
|
202
|
+
map topic rollback-round --id <topic-id> # 回退一轮
|
|
203
|
+
map topic close --id <topic-id> --reason no_experiment_needed --note "讨论后决定不开实验"
|
|
204
|
+
map topic dismiss --id <topic-id> # 退出话题(与 UI ✕ 相同)
|
|
205
|
+
map topic mark-seen --id <topic-id> # 清 contextual unread,不清 reply/ack/mention
|
|
216
206
|
map project decisions
|
|
217
207
|
map action list --mine
|
|
208
|
+
map action mark-wake-sent --id <action-item-id> # waker 升级:标记 WAKE 已发
|
|
209
|
+
map action mark-stale --id <action-item-id> # waker 升级:标记 STALE
|
|
218
210
|
map notification list --unread-only
|
|
219
211
|
map notification read --id <notification-id>
|
|
220
212
|
map notification read-all
|
|
@@ -222,6 +214,10 @@ map --persona participant mention list
|
|
|
222
214
|
map --persona participant mention dismiss --id <mention-id>
|
|
223
215
|
map --persona participant mention dismiss-all
|
|
224
216
|
|
|
217
|
+
# Host 编排模式:host 直接调用 participant/reviewer(同步响应,不依赖 waker 轮询)
|
|
218
|
+
map --persona host host invoke --persona participant --prompt "请参与话题 <topic-id> 的讨论"
|
|
219
|
+
map --persona host host invoke --persona reviewer --prompt-file ./review-task.md --json
|
|
220
|
+
|
|
225
221
|
# Web UI(React + Vite)
|
|
226
222
|
cd web && npm install && npm run dev # http://localhost:5173
|
|
227
223
|
# 开发模式通过 Vite 代理访问 API;先在设置页填入 API Token
|
|
@@ -240,7 +236,6 @@ cd web && npm install && npm run dev # http://localhost:5173
|
|
|
240
236
|
不依赖 Cursor MCP。每个代码仓库:
|
|
241
237
|
|
|
242
238
|
```bash
|
|
243
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
244
239
|
map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
|
|
245
240
|
map --persona host status # 查看 open_topics
|
|
246
241
|
```
|
|
@@ -277,14 +272,11 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
|
|
|
277
272
|
|
|
278
273
|
**@mention 收敛**:在话题/实验内发过评论后,对应 `mentions` 会自动从 todos 消失;只读不回时可 `map mention dismiss`。
|
|
279
274
|
|
|
280
|
-
## Host Worker
|
|
275
|
+
## Host Worker(已退役)
|
|
281
276
|
|
|
282
|
-
|
|
277
|
+
早期轮询 bridge(`map-host-bridge` / `map-host-worker`、`start-host-bridge*.sh`、`start-runtime-waker-claude.sh`、`start-all-wakers-legacy.sh`)已由 **simple-waker** 全面取代并停用(`MAP_USE_LEGACY_WAKER` 不再生效)。`pyproject.toml` 仅保留 `map-participant-bridge` / `map-reviewer-bridge` 两个 legacy console entry(维护模式),`map-host-bridge` 不再提供。
|
|
283
278
|
|
|
284
|
-
|
|
285
|
-
# 旧路径(不推荐新接入)
|
|
286
|
-
map-host-bridge --persona host --interval 30
|
|
287
|
-
```
|
|
279
|
+
详见 [docs/LEGACY-ENTRY-MATRIX.md](docs/LEGACY-ENTRY-MATRIX.md);CI 校验:`./scripts/check-deprecated.sh`。
|
|
288
280
|
|
|
289
281
|
## Docker(API + Web)
|
|
290
282
|
|
|
@@ -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
|
|
|
@@ -24,10 +30,10 @@ pip install multi-agent-platform
|
|
|
24
30
|
|
|
25
31
|
```bash
|
|
26
32
|
pip install multi-agent-platform
|
|
27
|
-
map skill install # 将
|
|
33
|
+
map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
安装后 Cursor 会自动发现 Skill,AI Agent 读取后即可遵循完整的 MAP
|
|
36
|
+
安装后 Cursor 会自动发现 Skill,AI Agent 读取后即可遵循完整的 MAP 协作流程(含讨论门禁(默认两轮,可伸缩)、实验生命周期等)。
|
|
31
37
|
|
|
32
38
|
**方式二:使用简化 Prompt(快速上手)**
|
|
33
39
|
|
|
@@ -35,71 +41,41 @@ map skill install # 将 6 个 Skill 文件安装到 .cursor/skills/
|
|
|
35
41
|
|
|
36
42
|
## 文档
|
|
37
43
|
|
|
44
|
+
- [文档总入口](docs/INDEX.md)
|
|
38
45
|
- [MAP Agent Prompt(给 AI Agent 的协作指南)](MAP_AGENT_PROMPT.md)
|
|
39
46
|
- [Quick Start 指南(新用户必读)](docs/QUICKSTART.md)
|
|
40
|
-
- [
|
|
41
|
-
- [产品需求文档 v0.2(角色与项目边界)](docs/prd/archive/v0.2.md)
|
|
42
|
-
- [产品需求文档 v0.3(话题独立、UI 写闭环、待办与通知)](docs/prd/archive/v0.3.md)
|
|
43
|
-
- [产品需求文档 v0.4(站内收件箱、@提及、计划 diff、话题置顶)](docs/prd/archive/v0.4.md)
|
|
44
|
-
- [产品需求文档 v0.5(主持待办 pending_topic_replies、topic-host Skill)](docs/prd/archive/v0.5.md)
|
|
45
|
-
- [产品需求文档 v0.6(列表归档、独立列表页、通知 SSE)](docs/prd/archive/v0.6.md)
|
|
46
|
-
- [产品需求文档 v0.9 草案(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
|
|
47
|
-
- [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
|
|
48
|
-
- [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
|
|
47
|
+
- [CLI 指南](docs/CLI.md)
|
|
49
48
|
- [架构设计](docs/ARCHITECTURE.md)
|
|
50
49
|
- [Python SDK 指南](docs/SDK.md)
|
|
51
50
|
- [MCP Server 指南(stdio)](docs/MCP.md)
|
|
51
|
+
- [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
|
|
52
|
+
- [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
|
|
53
|
+
- [Persona 行为差异](docs/MAP-PERSONA-COMPARE.md)
|
|
54
|
+
- [Web 端 Agent UI 视图](docs/UI-AGENTS.md)
|
|
55
|
+
- [证据元数据契约](docs/MAP-EVIDENCE-METADATA.md)
|
|
56
|
+
- [错误码清单](docs/MAP-ERROR-CODES.md)
|
|
52
57
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
**M1 已完成**:数据模型、Alembic 迁移、Projects/Experiments CRUD REST API。
|
|
56
|
-
**M2 已完成**:Plans 修订、Reviews、Comments、实验阶段与不合理项状态机。
|
|
57
|
-
**M3 已完成**:实验日志、Start/Complete、全局 Status API、CLI(`map` 命令)。
|
|
58
|
-
**M4 已完成**:React + Vite Web UI(看板、项目、实验话题页)。
|
|
59
|
-
**M5 已完成**:Python SDK(`map_client`)、SDK 文档、CLI 基于 SDK 重构、Docker 部署。
|
|
60
|
-
**M6 已完成**:MCP stdio + HTTP 服务(`map-mcp`),供 IDE Agent 调用。
|
|
61
|
-
**M7 已完成**:项目角色边界(`project_key`、Agent 项目绑定、权限门控、Status MD v1)。
|
|
62
|
-
**M8 已完成**:项目 Current Status MD 版本化(修订 API、历史查询、CLI/MCP)。
|
|
63
|
-
|
|
64
|
-
**v0.3 已完成(M11–M14)**:
|
|
65
|
-
|
|
66
|
-
- **M11**:话题(Topic)独立实体 + 评论树 + 实验↔话题可选关联 + Alembic 迁移 + CLI/SDK/MCP 适配。
|
|
67
|
-
- **M12**:Web UI 写操作闭环——发布话题/实验、修订计划、提交评审、追加日志、撤回/取消/编辑、通用讨论;新增话题详情页。
|
|
68
|
-
- **M13**:Agent 待办视图(`GET /agents/me/todos`)+ 实验列表筛选/分页/搜索(`q`/`creator`/`page` + `X-Total-Count` header)。
|
|
69
|
-
- **M14**:Webhook 出站通知(HMAC 签名 + 投递记录 + Admin CRUD)+ 审计日志(关键写操作打点 + 对象/全局查询)。
|
|
70
|
-
|
|
71
|
-
详见 [PRD v0.3](docs/prd/archive/v0.3.md)。
|
|
72
|
-
|
|
73
|
-
**v0.4 已完成(M15–M18)**:
|
|
74
|
-
|
|
75
|
-
- **M15**:站内通知收件箱(`notifications` 表 + 统一事件扇出 + API/Web/CLI/SDK/MCP)。
|
|
76
|
-
- **M16**:评论 `@提及` → 待办 `mentions` 分区 + 定向通知。
|
|
77
|
-
- **M17**:实验页计划版本 diff 只读视图(`PlanDiffView`)。
|
|
78
|
-
- **M18**:话题置顶(`topics.pinned` + 列表优先排序)。
|
|
79
|
-
|
|
80
|
-
详见 [PRD v0.4](docs/prd/archive/v0.4.md)。
|
|
81
|
-
|
|
82
|
-
**v0.5 已完成(M19–M21)**:
|
|
83
|
-
|
|
84
|
-
- **M19**:`GET /agents/me/todos` 新增 `pending_topic_replies`(话题主持 thread 级待回复)。
|
|
85
|
-
- **M20**:topic-host Skill(`.cursor/skills/topic-host/SKILL.md`)。
|
|
86
|
-
- **M21**:Webhook 主持接线文档([WEBHOOK-TOPIC-HOST.md](docs/WEBHOOK-TOPIC-HOST.md))。
|
|
58
|
+
### PRD
|
|
87
59
|
|
|
88
|
-
|
|
60
|
+
- [现行草案:v0.9(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
|
|
61
|
+
- [归档:v0.1 / v0.2 / v0.3 / v0.4 / v0.5 / v0.6](docs/prd/archive/)
|
|
62
|
+
- [占位:v0.7 / v0.8(未单独成稿)](docs/prd/archive/v0.7.md)
|
|
89
63
|
|
|
90
|
-
|
|
64
|
+
## 状态
|
|
91
65
|
|
|
92
|
-
|
|
93
|
-
- **M23**:Web 独立列表页(`/projects/:id/topics`、`/experiments`)+ `client.ts` vitest。
|
|
94
|
-
- **M24**:站内通知 **SSE**(`GET /agents/me/notifications/stream`)+ Web 实时 invalidate。
|
|
66
|
+
**稳定能力**:
|
|
95
67
|
|
|
96
|
-
|
|
68
|
+
- **实验生命周期**:计划修订、评审、执行日志、结果审批、状态机
|
|
69
|
+
- **话题协作**:独立话题 + 评论树 + @提及 + 多轮讨论 + Round Summary + 结论与行动项
|
|
70
|
+
- **待办与通知**:Agent 待办视图 + 站内通知 + SSE 实时推送 + Webhook 出站
|
|
71
|
+
- **Web UI**:React + Vite 看板 / 话题 / 实验详情,写操作闭环
|
|
72
|
+
- **多入口接入**:Python SDK + `map` CLI + MCP stdio/HTTP(`map-mcp`)
|
|
73
|
+
- **Agent Runtime**:simple-waker 默认路径(轮询 + remind + action_item 升级)
|
|
74
|
+
- **多 persona 协作**:`.map/` persona + Skill 指导 Agent 写回 MAP
|
|
97
75
|
|
|
98
|
-
|
|
76
|
+
**当前主线**:v0.9 草案(waker Phase 2 通知降噪)。详见 [PRD v0.9](docs/prd/v0.9.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
|
|
99
77
|
|
|
100
|
-
|
|
101
|
-
- CLI:`map topic resolve --id <topic-id> --file decision.md|decision.yaml`、`map project decisions`、`map action list --mine`。
|
|
102
|
-
- Web:话题详情页展示/修订结论,项目页展示最近结论,待办页展示分配给当前 Agent 的行动项。
|
|
78
|
+
历史里程碑详见 PRD 归档:[v0.1–v0.6](docs/prd/archive/) · [占位 v0.7 / v0.8](docs/prd/archive/v0.7.md)。
|
|
103
79
|
|
|
104
80
|
**Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
|
|
105
81
|
|
|
@@ -108,7 +84,6 @@ map skill install # 将 6 个 Skill 文件安装到 .cursor/skills/
|
|
|
108
84
|
MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
|
|
109
85
|
|
|
110
86
|
```bash
|
|
111
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
112
87
|
map bootstrap \
|
|
113
88
|
--key multi-agent-platform \
|
|
114
89
|
--name "Multi Agents Platform" \
|
|
@@ -118,18 +93,21 @@ map --persona host persona whoami
|
|
|
118
93
|
map --persona host todos
|
|
119
94
|
```
|
|
120
95
|
|
|
121
|
-
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
|
|
96
|
+
与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。bootstrap 走自助 `POST /api/v1/bootstrap` 端点,**无需 admin token**(老版本 server 自动回退到 admin token 路径)。
|
|
122
97
|
|
|
123
98
|
## 快速开始
|
|
124
99
|
|
|
125
100
|
```bash
|
|
126
|
-
# 从 PyPI
|
|
101
|
+
# 从 PyPI 安装(仅 CLI,连接远程 server)
|
|
127
102
|
pip install multi-agent-platform
|
|
128
103
|
|
|
104
|
+
# 或安装 CLI + Server(本地运行 server)
|
|
105
|
+
pip install multi-agent-platform-server
|
|
106
|
+
|
|
129
107
|
# 或从源码开发安装(贡献者)
|
|
130
108
|
pip install -e ".[dev]"
|
|
131
109
|
|
|
132
|
-
#
|
|
110
|
+
# 运行数据库迁移(需要 server 依赖)
|
|
133
111
|
alembic upgrade head
|
|
134
112
|
|
|
135
113
|
# 启动 API 服务
|
|
@@ -167,9 +145,19 @@ map topic archive --id <topic-id> # v0.7 P3:归档(薄包装 P
|
|
|
167
145
|
map topic archive --id <topic-id> --undo # 反归档(--unarchive 同义)
|
|
168
146
|
map experiment archive --id <exp-id> # 归档实验
|
|
169
147
|
map topic comment --id <topic-id> --file comment.md
|
|
170
|
-
map topic
|
|
148
|
+
map topic comment --id <topic-id> --body "..." --round-summary # 标记 Round Summary(触发 ack 流)
|
|
149
|
+
map topic advance-round --id <topic-id> # roundN → roundN+1
|
|
150
|
+
map topic advance-round --id <topic-id> --ready # 标记 ready(可开实验)
|
|
151
|
+
map topic advance-round --id <topic-id> --ack accept|reject|dismiss # participant 表态
|
|
152
|
+
map topic advance-round --id <topic-id> --waive-ack --waive-reason "参与者离线,结论已收敛"
|
|
153
|
+
map topic rollback-round --id <topic-id> # 回退一轮
|
|
154
|
+
map topic close --id <topic-id> --reason no_experiment_needed --note "讨论后决定不开实验"
|
|
155
|
+
map topic dismiss --id <topic-id> # 退出话题(与 UI ✕ 相同)
|
|
156
|
+
map topic mark-seen --id <topic-id> # 清 contextual unread,不清 reply/ack/mention
|
|
171
157
|
map project decisions
|
|
172
158
|
map action list --mine
|
|
159
|
+
map action mark-wake-sent --id <action-item-id> # waker 升级:标记 WAKE 已发
|
|
160
|
+
map action mark-stale --id <action-item-id> # waker 升级:标记 STALE
|
|
173
161
|
map notification list --unread-only
|
|
174
162
|
map notification read --id <notification-id>
|
|
175
163
|
map notification read-all
|
|
@@ -177,6 +165,10 @@ map --persona participant mention list
|
|
|
177
165
|
map --persona participant mention dismiss --id <mention-id>
|
|
178
166
|
map --persona participant mention dismiss-all
|
|
179
167
|
|
|
168
|
+
# Host 编排模式:host 直接调用 participant/reviewer(同步响应,不依赖 waker 轮询)
|
|
169
|
+
map --persona host host invoke --persona participant --prompt "请参与话题 <topic-id> 的讨论"
|
|
170
|
+
map --persona host host invoke --persona reviewer --prompt-file ./review-task.md --json
|
|
171
|
+
|
|
180
172
|
# Web UI(React + Vite)
|
|
181
173
|
cd web && npm install && npm run dev # http://localhost:5173
|
|
182
174
|
# 开发模式通过 Vite 代理访问 API;先在设置页填入 API Token
|
|
@@ -195,7 +187,6 @@ cd web && npm install && npm run dev # http://localhost:5173
|
|
|
195
187
|
不依赖 Cursor MCP。每个代码仓库:
|
|
196
188
|
|
|
197
189
|
```bash
|
|
198
|
-
export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
|
|
199
190
|
map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
|
|
200
191
|
map --persona host status # 查看 open_topics
|
|
201
192
|
```
|
|
@@ -232,14 +223,11 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
|
|
|
232
223
|
|
|
233
224
|
**@mention 收敛**:在话题/实验内发过评论后,对应 `mentions` 会自动从 todos 消失;只读不回时可 `map mention dismiss`。
|
|
234
225
|
|
|
235
|
-
## Host Worker
|
|
226
|
+
## Host Worker(已退役)
|
|
236
227
|
|
|
237
|
-
|
|
228
|
+
早期轮询 bridge(`map-host-bridge` / `map-host-worker`、`start-host-bridge*.sh`、`start-runtime-waker-claude.sh`、`start-all-wakers-legacy.sh`)已由 **simple-waker** 全面取代并停用(`MAP_USE_LEGACY_WAKER` 不再生效)。`pyproject.toml` 仅保留 `map-participant-bridge` / `map-reviewer-bridge` 两个 legacy console entry(维护模式),`map-host-bridge` 不再提供。
|
|
238
229
|
|
|
239
|
-
|
|
240
|
-
# 旧路径(不推荐新接入)
|
|
241
|
-
map-host-bridge --persona host --interval 30
|
|
242
|
-
```
|
|
230
|
+
详见 [docs/LEGACY-ENTRY-MATRIX.md](docs/LEGACY-ENTRY-MATRIX.md);CI 校验:`./scripts/check-deprecated.sh`。
|
|
243
231
|
|
|
244
232
|
## Docker(API + Web)
|
|
245
233
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Persistent in-process Claude SDK client with session resume.
|
|
2
2
|
|
|
3
|
-
Used by
|
|
3
|
+
Used by simple-waker (event-driven wake) and legacy bridges. The process
|
|
4
4
|
holds ONE ``ClaudeSDKClient`` for its lifetime; ``claude_session_id`` is
|
|
5
5
|
persisted in local state so the next restart resumes the same Claude session
|
|
6
6
|
(via ``ClaudeAgentOptions(resume=...)``).
|
|
@@ -49,7 +49,7 @@ _MODEL_ENV_KEYS: tuple[str, ...] = ("ANTHROPIC_MODEL", "CLAUDE_MODEL")
|
|
|
49
49
|
|
|
50
50
|
_EXPORT_RE = re.compile(r"^\s*export\s+([A-Za-z_][A-Za-z0-9_]*)=(.*)$")
|
|
51
51
|
|
|
52
|
-
IntegrationMode = Literal["bridge", "waker", "manual"]
|
|
52
|
+
IntegrationMode = Literal["bridge", "waker", "manual", "orchestrator"]
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class WakeUpEvent(TypedDict, total=False):
|
|
@@ -410,7 +410,7 @@ class PersonaAgentClient:
|
|
|
410
410
|
if self.integration == "waker":
|
|
411
411
|
return (
|
|
412
412
|
f"You are the **{self.persona}** persona of the MAP (Multi-Agent Platform) "
|
|
413
|
-
"project. When woken by
|
|
413
|
+
"project. When woken by simple-waker you receive a single wake event. "
|
|
414
414
|
f"Confirm identity with `map --persona {self.persona} persona whoami`, read "
|
|
415
415
|
f"latest work with `map --persona {self.persona} todos`, then handle only the "
|
|
416
416
|
"event in the wake prompt using the appropriate skill from `.cursor/skills/`. "
|
|
@@ -424,7 +424,18 @@ class PersonaAgentClient:
|
|
|
424
424
|
f"Use `map --persona {self.persona}` CLI and skills under `.cursor/skills/` "
|
|
425
425
|
"(topic-host, topic-participant, experiment-host, experiment-reviewer, "
|
|
426
426
|
"map-project-collab). Follow the operator's instructions for the current task. "
|
|
427
|
-
"Do not assume
|
|
427
|
+
"Do not assume simple-waker will send another wake for the same work item."
|
|
428
|
+
)
|
|
429
|
+
if self.integration == "orchestrator":
|
|
430
|
+
return (
|
|
431
|
+
f"You are the **{self.persona}** persona of the MAP (Multi-Agent Platform) "
|
|
432
|
+
"project. You are being invoked directly by the host agent via "
|
|
433
|
+
f"`map host invoke`. Use `map --persona {self.persona}` CLI and skills "
|
|
434
|
+
"under `.cursor/skills/` (topic-host, topic-participant, experiment-host, "
|
|
435
|
+
"experiment-reviewer, map-project-collab) to handle the task in the prompt. "
|
|
436
|
+
"Gather context via the `map` CLI, perform the requested action, and report "
|
|
437
|
+
"a brief summary when done. Do not wait for a waker — this is a synchronous "
|
|
438
|
+
"invocation and the host is waiting for your response."
|
|
428
439
|
)
|
|
429
440
|
return (
|
|
430
441
|
f"You are the **{self.persona}** persona of the MAP (Multi-Agent Platform) "
|
|
@@ -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)
|
|
@@ -160,9 +161,34 @@ def experiment_approve(experiment_id: uuid.UUID = typer.Option(..., "--id")) ->
|
|
|
160
161
|
|
|
161
162
|
|
|
162
163
|
@experiment_app.command("start")
|
|
163
|
-
def experiment_start(
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
def experiment_start(
|
|
165
|
+
experiment_id: uuid.UUID = typer.Option(..., "--id"),
|
|
166
|
+
executor: str | None = typer.Option(
|
|
167
|
+
None,
|
|
168
|
+
"--executor",
|
|
169
|
+
help=(
|
|
170
|
+
"Delegate execution to another agent (name or UUID). The designated "
|
|
171
|
+
"executor becomes the sole non-admin caller allowed to ``complete``. "
|
|
172
|
+
"Omit to self-execute (host runs the experiment)."
|
|
173
|
+
),
|
|
174
|
+
),
|
|
175
|
+
) -> None:
|
|
176
|
+
"""Start experiment execution (approved → running).
|
|
177
|
+
|
|
178
|
+
Migration 042 adds optional executor delegation: pass ``--executor``
|
|
179
|
+
with an agent name or UUID to designate who may call ``complete``.
|
|
180
|
+
The host retains all other lifecycle gates (cancel / withdraw / etc).
|
|
181
|
+
"""
|
|
182
|
+
from cli.main import _resolve_executor_agent_id, _resolve_project, _run # lazy: avoid cycle
|
|
183
|
+
|
|
184
|
+
def action(c: MAPClient):
|
|
185
|
+
executor_agent_id: uuid.UUID | None = None
|
|
186
|
+
if executor is not None:
|
|
187
|
+
pid = _resolve_project(c, None, None)
|
|
188
|
+
executor_agent_id = _resolve_executor_agent_id(c, pid, executor)
|
|
189
|
+
return c.start_experiment(experiment_id, executor_agent_id=executor_agent_id)
|
|
190
|
+
|
|
191
|
+
_run(action, experiment_id=experiment_id)
|
|
166
192
|
|
|
167
193
|
|
|
168
194
|
@experiment_app.command("pre-complete")
|
|
@@ -519,7 +545,7 @@ def experiment_archive(
|
|
|
519
545
|
"""
|
|
520
546
|
from cli.main import _require_option_uuid, _run # lazy: avoid cycle
|
|
521
547
|
experiment_id = _require_option_uuid(experiment_id)
|
|
522
|
-
from
|
|
548
|
+
from map_types.schemas import ExperimentUpdate
|
|
523
549
|
|
|
524
550
|
payload = ExperimentUpdate(archived=not (undo or unarchive))
|
|
525
551
|
object_kind = "experiment"
|
|
@@ -735,9 +761,10 @@ def experiment_comment(
|
|
|
735
761
|
body_file: Path | None = typer.Option(None, "--file", help="Read body from a file (avoids shell-quoting issues)."),
|
|
736
762
|
parent: uuid.UUID | None = typer.Option(None, "--parent"),
|
|
737
763
|
) -> None:
|
|
764
|
+
from map_types.enums import CommentAnchorType
|
|
765
|
+
from map_types.schemas import CommentCreate
|
|
766
|
+
|
|
738
767
|
from cli.main import _read_text_file, _run # lazy: avoid cycle
|
|
739
|
-
from server.domain.models import CommentAnchorType
|
|
740
|
-
from server.domain.schemas import CommentCreate
|
|
741
768
|
|
|
742
769
|
if body is None and body_file is None:
|
|
743
770
|
typer.echo("Error: either --body or --file is required", err=True)
|