multi-agent-platform 0.1.0__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.
Files changed (295) hide show
  1. multi_agent_platform-0.1.0/LICENSE +21 -0
  2. multi_agent_platform-0.1.0/PKG-INFO +298 -0
  3. multi_agent_platform-0.1.0/README.md +253 -0
  4. multi_agent_platform-0.1.0/cli/__init__.py +0 -0
  5. multi_agent_platform-0.1.0/cli/action_item_escalation.py +177 -0
  6. multi_agent_platform-0.1.0/cli/agent_client.py +554 -0
  7. multi_agent_platform-0.1.0/cli/bridge_state.py +43 -0
  8. multi_agent_platform-0.1.0/cli/commands/__init__.py +13 -0
  9. multi_agent_platform-0.1.0/cli/commands/action.py +142 -0
  10. multi_agent_platform-0.1.0/cli/commands/agent.py +117 -0
  11. multi_agent_platform-0.1.0/cli/commands/audit.py +68 -0
  12. multi_agent_platform-0.1.0/cli/commands/docs.py +179 -0
  13. multi_agent_platform-0.1.0/cli/commands/experiment.py +755 -0
  14. multi_agent_platform-0.1.0/cli/commands/feedback.py +106 -0
  15. multi_agent_platform-0.1.0/cli/commands/notification.py +213 -0
  16. multi_agent_platform-0.1.0/cli/commands/persona.py +63 -0
  17. multi_agent_platform-0.1.0/cli/commands/project.py +87 -0
  18. multi_agent_platform-0.1.0/cli/commands/runtime.py +105 -0
  19. multi_agent_platform-0.1.0/cli/commands/topic.py +361 -0
  20. multi_agent_platform-0.1.0/cli/e2e_collab.py +602 -0
  21. multi_agent_platform-0.1.0/cli/git_checkpoint.py +68 -0
  22. multi_agent_platform-0.1.0/cli/host_worker_types.py +151 -0
  23. multi_agent_platform-0.1.0/cli/main.py +1553 -0
  24. multi_agent_platform-0.1.0/cli/map_command_client.py +497 -0
  25. multi_agent_platform-0.1.0/cli/participant_worker.py +255 -0
  26. multi_agent_platform-0.1.0/cli/reviewer_worker.py +263 -0
  27. multi_agent_platform-0.1.0/cli/runtime/__init__.py +5 -0
  28. multi_agent_platform-0.1.0/cli/runtime/run_lock.py +497 -0
  29. multi_agent_platform-0.1.0/cli/runtime_chat.py +317 -0
  30. multi_agent_platform-0.1.0/cli/session_wake_log.py +235 -0
  31. multi_agent_platform-0.1.0/cli/simple_waker.py +950 -0
  32. multi_agent_platform-0.1.0/cli/table_render.py +113 -0
  33. multi_agent_platform-0.1.0/cli/wake_backend.py +236 -0
  34. multi_agent_platform-0.1.0/cli/worker_cycle_log.py +36 -0
  35. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/PKG-INFO +298 -0
  36. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/SOURCES.txt +293 -0
  37. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/dependency_links.txt +1 -0
  38. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/entry_points.txt +6 -0
  39. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/requires.txt +29 -0
  40. multi_agent_platform-0.1.0/multi_agent_platform.egg-info/top_level.txt +6 -0
  41. multi_agent_platform-0.1.0/pyproject.toml +198 -0
  42. multi_agent_platform-0.1.0/sdk/python/map_client/__init__.py +37 -0
  43. multi_agent_platform-0.1.0/sdk/python/map_client/bootstrap.py +193 -0
  44. multi_agent_platform-0.1.0/sdk/python/map_client/client.py +1045 -0
  45. multi_agent_platform-0.1.0/sdk/python/map_client/config.py +21 -0
  46. multi_agent_platform-0.1.0/sdk/python/map_client/errors.py +283 -0
  47. multi_agent_platform-0.1.0/sdk/python/map_client/exceptions.py +130 -0
  48. multi_agent_platform-0.1.0/sdk/python/map_client/plan_evidence.py +159 -0
  49. multi_agent_platform-0.1.0/sdk/python/map_client/project_config.py +153 -0
  50. multi_agent_platform-0.1.0/sdk/python/map_client/result_template.py +167 -0
  51. multi_agent_platform-0.1.0/sdk/python/map_client/testing.py +27 -0
  52. multi_agent_platform-0.1.0/sdk/python/map_mcp/__init__.py +4 -0
  53. multi_agent_platform-0.1.0/sdk/python/map_mcp/_utils.py +28 -0
  54. multi_agent_platform-0.1.0/sdk/python/map_mcp/auth.py +34 -0
  55. multi_agent_platform-0.1.0/sdk/python/map_mcp/config.py +50 -0
  56. multi_agent_platform-0.1.0/sdk/python/map_mcp/context.py +39 -0
  57. multi_agent_platform-0.1.0/sdk/python/map_mcp/main.py +75 -0
  58. multi_agent_platform-0.1.0/sdk/python/map_mcp/server.py +573 -0
  59. multi_agent_platform-0.1.0/sdk/python/map_mcp/session.py +79 -0
  60. multi_agent_platform-0.1.0/sdk/python/map_sdk/__init__.py +29 -0
  61. multi_agent_platform-0.1.0/sdk/python/map_sdk/evidence.py +68 -0
  62. multi_agent_platform-0.1.0/sdk/python/map_types/__init__.py +203 -0
  63. multi_agent_platform-0.1.0/sdk/python/map_types/enums.py +199 -0
  64. multi_agent_platform-0.1.0/sdk/python/map_types/schemas.py +1351 -0
  65. multi_agent_platform-0.1.0/server/__init__.py +0 -0
  66. multi_agent_platform-0.1.0/server/__version__.py +14 -0
  67. multi_agent_platform-0.1.0/server/api/__init__.py +0 -0
  68. multi_agent_platform-0.1.0/server/api/action_items.py +138 -0
  69. multi_agent_platform-0.1.0/server/api/agents.py +412 -0
  70. multi_agent_platform-0.1.0/server/api/audit.py +54 -0
  71. multi_agent_platform-0.1.0/server/api/background_tasks.py +18 -0
  72. multi_agent_platform-0.1.0/server/api/common.py +117 -0
  73. multi_agent_platform-0.1.0/server/api/deps.py +30 -0
  74. multi_agent_platform-0.1.0/server/api/experiments.py +858 -0
  75. multi_agent_platform-0.1.0/server/api/feedback.py +75 -0
  76. multi_agent_platform-0.1.0/server/api/notifications.py +22 -0
  77. multi_agent_platform-0.1.0/server/api/projects.py +209 -0
  78. multi_agent_platform-0.1.0/server/api/router.py +25 -0
  79. multi_agent_platform-0.1.0/server/api/status.py +33 -0
  80. multi_agent_platform-0.1.0/server/api/topics.py +302 -0
  81. multi_agent_platform-0.1.0/server/api/webhooks.py +74 -0
  82. multi_agent_platform-0.1.0/server/auth/__init__.py +8 -0
  83. multi_agent_platform-0.1.0/server/auth/experiment_access.py +66 -0
  84. multi_agent_platform-0.1.0/server/config.py +38 -0
  85. multi_agent_platform-0.1.0/server/db/__init__.py +3 -0
  86. multi_agent_platform-0.1.0/server/db/base.py +5 -0
  87. multi_agent_platform-0.1.0/server/db/deadlock_retry.py +146 -0
  88. multi_agent_platform-0.1.0/server/db/session.py +41 -0
  89. multi_agent_platform-0.1.0/server/domain/__init__.py +3 -0
  90. multi_agent_platform-0.1.0/server/domain/encrypted_types.py +63 -0
  91. multi_agent_platform-0.1.0/server/domain/models.py +713 -0
  92. multi_agent_platform-0.1.0/server/domain/schemas.py +3 -0
  93. multi_agent_platform-0.1.0/server/domain/state_machine.py +79 -0
  94. multi_agent_platform-0.1.0/server/domain/topic_ack_constants.py +9 -0
  95. multi_agent_platform-0.1.0/server/main.py +148 -0
  96. multi_agent_platform-0.1.0/server/scripts/__init__.py +0 -0
  97. multi_agent_platform-0.1.0/server/scripts/migrate_notification_unique.py +231 -0
  98. multi_agent_platform-0.1.0/server/scripts/purge_audit_pollution.py +116 -0
  99. multi_agent_platform-0.1.0/server/services/__init__.py +0 -0
  100. multi_agent_platform-0.1.0/server/services/_lookups.py +26 -0
  101. multi_agent_platform-0.1.0/server/services/acceptance_service.py +90 -0
  102. multi_agent_platform-0.1.0/server/services/action_item_migration_service.py +190 -0
  103. multi_agent_platform-0.1.0/server/services/action_item_service.py +200 -0
  104. multi_agent_platform-0.1.0/server/services/agent_work_service.py +405 -0
  105. multi_agent_platform-0.1.0/server/services/archive_lint_service.py +156 -0
  106. multi_agent_platform-0.1.0/server/services/audit_service.py +457 -0
  107. multi_agent_platform-0.1.0/server/services/auth.py +66 -0
  108. multi_agent_platform-0.1.0/server/services/comment_service.py +173 -0
  109. multi_agent_platform-0.1.0/server/services/errors.py +65 -0
  110. multi_agent_platform-0.1.0/server/services/escalation_resolver.py +248 -0
  111. multi_agent_platform-0.1.0/server/services/evidence_service.py +88 -0
  112. multi_agent_platform-0.1.0/server/services/experiment_capabilities_service.py +277 -0
  113. multi_agent_platform-0.1.0/server/services/inbound_event_service.py +111 -0
  114. multi_agent_platform-0.1.0/server/services/lock_service.py +273 -0
  115. multi_agent_platform-0.1.0/server/services/log_service.py +202 -0
  116. multi_agent_platform-0.1.0/server/services/mention_service.py +730 -0
  117. multi_agent_platform-0.1.0/server/services/notification_service.py +939 -0
  118. multi_agent_platform-0.1.0/server/services/notification_stream.py +138 -0
  119. multi_agent_platform-0.1.0/server/services/permissions.py +147 -0
  120. multi_agent_platform-0.1.0/server/services/persona_activity_service.py +108 -0
  121. multi_agent_platform-0.1.0/server/services/phase_owner_resolver.py +95 -0
  122. multi_agent_platform-0.1.0/server/services/phase_service.py +381 -0
  123. multi_agent_platform-0.1.0/server/services/plan_marker_service.py +235 -0
  124. multi_agent_platform-0.1.0/server/services/plan_service.py +186 -0
  125. multi_agent_platform-0.1.0/server/services/platform_feedback_service.py +114 -0
  126. multi_agent_platform-0.1.0/server/services/project_service.py +534 -0
  127. multi_agent_platform-0.1.0/server/services/project_status_service.py +132 -0
  128. multi_agent_platform-0.1.0/server/services/review_service.py +707 -0
  129. multi_agent_platform-0.1.0/server/services/secret_encryption.py +97 -0
  130. multi_agent_platform-0.1.0/server/services/similarity_service.py +119 -0
  131. multi_agent_platform-0.1.0/server/services/sse_event_schemas.py +17 -0
  132. multi_agent_platform-0.1.0/server/services/status_service.py +68 -0
  133. multi_agent_platform-0.1.0/server/services/template_service.py +134 -0
  134. multi_agent_platform-0.1.0/server/services/text_utils.py +19 -0
  135. multi_agent_platform-0.1.0/server/services/thread_activity.py +180 -0
  136. multi_agent_platform-0.1.0/server/services/todo_persona_filter.py +73 -0
  137. multi_agent_platform-0.1.0/server/services/todo_service.py +604 -0
  138. multi_agent_platform-0.1.0/server/services/topic_ack_service.py +312 -0
  139. multi_agent_platform-0.1.0/server/services/topic_action_item_ops.py +538 -0
  140. multi_agent_platform-0.1.0/server/services/topic_comment_kind.py +14 -0
  141. multi_agent_platform-0.1.0/server/services/topic_comment_service.py +237 -0
  142. multi_agent_platform-0.1.0/server/services/topic_helpers.py +32 -0
  143. multi_agent_platform-0.1.0/server/services/topic_lifecycle_service.py +478 -0
  144. multi_agent_platform-0.1.0/server/services/topic_progress_service.py +40 -0
  145. multi_agent_platform-0.1.0/server/services/topic_resolve_service.py +234 -0
  146. multi_agent_platform-0.1.0/server/services/topic_service.py +102 -0
  147. multi_agent_platform-0.1.0/server/services/topic_work_item_service.py +570 -0
  148. multi_agent_platform-0.1.0/server/services/webhook_service.py +273 -0
  149. multi_agent_platform-0.1.0/setup.cfg +4 -0
  150. multi_agent_platform-0.1.0/tests/test_18a64691_linkage.py +182 -0
  151. multi_agent_platform-0.1.0/tests/test_a2_action_item_cascade.py +653 -0
  152. multi_agent_platform-0.1.0/tests/test_accept_result_verdict.py +796 -0
  153. multi_agent_platform-0.1.0/tests/test_action_items.py +484 -0
  154. multi_agent_platform-0.1.0/tests/test_agent_client.py +718 -0
  155. multi_agent_platform-0.1.0/tests/test_agent_work.py +76 -0
  156. multi_agent_platform-0.1.0/tests/test_agents_list.py +90 -0
  157. multi_agent_platform-0.1.0/tests/test_arch_map_sdk_evidence.py +100 -0
  158. multi_agent_platform-0.1.0/tests/test_archive_lint_service.py +362 -0
  159. multi_agent_platform-0.1.0/tests/test_audit_admin_cli.py +230 -0
  160. multi_agent_platform-0.1.0/tests/test_audit_admin_filter.py +275 -0
  161. multi_agent_platform-0.1.0/tests/test_auth.py +82 -0
  162. multi_agent_platform-0.1.0/tests/test_auth_experiment_access.py +162 -0
  163. multi_agent_platform-0.1.0/tests/test_authz_cross_persona_capability.py +238 -0
  164. multi_agent_platform-0.1.0/tests/test_authz_pr3_creator_gating_extended.py +177 -0
  165. multi_agent_platform-0.1.0/tests/test_b_acceptance.py +634 -0
  166. multi_agent_platform-0.1.0/tests/test_b_action_item_stale.py +218 -0
  167. multi_agent_platform-0.1.0/tests/test_b_action_item_wake_endpoints.py +253 -0
  168. multi_agent_platform-0.1.0/tests/test_b_action_item_wake_stale.py +399 -0
  169. multi_agent_platform-0.1.0/tests/test_b_action_item_wake_stale_notifications.py +429 -0
  170. multi_agent_platform-0.1.0/tests/test_b_waker_should_wake_action_item.py +248 -0
  171. multi_agent_platform-0.1.0/tests/test_bridge_state.py +58 -0
  172. multi_agent_platform-0.1.0/tests/test_cleanup_audit_log_no_commit.py +55 -0
  173. multi_agent_platform-0.1.0/tests/test_cleanup_exp_b_paging_seven_endpoints.py +200 -0
  174. multi_agent_platform-0.1.0/tests/test_cleanup_exp_b_paging_unified_limit.py +132 -0
  175. multi_agent_platform-0.1.0/tests/test_clear_action_template.py +207 -0
  176. multi_agent_platform-0.1.0/tests/test_cli.py +989 -0
  177. multi_agent_platform-0.1.0/tests/test_cli_error_envelope.py +271 -0
  178. multi_agent_platform-0.1.0/tests/test_cli_evidence_contract.py +340 -0
  179. multi_agent_platform-0.1.0/tests/test_cli_format_priority.py +300 -0
  180. multi_agent_platform-0.1.0/tests/test_cli_n2_hard_cutover.py +431 -0
  181. multi_agent_platform-0.1.0/tests/test_cli_schema_discovery.py +156 -0
  182. multi_agent_platform-0.1.0/tests/test_cli_status.py +50 -0
  183. multi_agent_platform-0.1.0/tests/test_cli_template_contract.py +364 -0
  184. multi_agent_platform-0.1.0/tests/test_cli_work_deprecation.py +127 -0
  185. multi_agent_platform-0.1.0/tests/test_cross_persona_call_audit.py +228 -0
  186. multi_agent_platform-0.1.0/tests/test_deadlock_retry.py +182 -0
  187. multi_agent_platform-0.1.0/tests/test_docs_inventory.py +131 -0
  188. multi_agent_platform-0.1.0/tests/test_eng_fast_gate_whitelist_complete.py +85 -0
  189. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_agent_work_service.py +198 -0
  190. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_agents.py +95 -0
  191. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_experiment_capabilities_service.py +111 -0
  192. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_experiments_projects.py +151 -0
  193. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_mention_service.py +125 -0
  194. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_notification_service.py +156 -0
  195. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_phase_service.py +115 -0
  196. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_project_service.py +117 -0
  197. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_todo_service.py +161 -0
  198. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_topic_comment_service.py +136 -0
  199. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_topic_service.py +177 -0
  200. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_topic_work_item_service.py +151 -0
  201. multi_agent_platform-0.1.0/tests/test_eng_mypy_strict_topics.py +111 -0
  202. multi_agent_platform-0.1.0/tests/test_eng_typing_extensions_clean.py +103 -0
  203. multi_agent_platform-0.1.0/tests/test_eng_uv_lock.py +65 -0
  204. multi_agent_platform-0.1.0/tests/test_eng_version_single_source.py +116 -0
  205. multi_agent_platform-0.1.0/tests/test_error_codes_cli.py +309 -0
  206. multi_agent_platform-0.1.0/tests/test_error_envelope_and_file_options.py +321 -0
  207. multi_agent_platform-0.1.0/tests/test_escalation_resolver.py +339 -0
  208. multi_agent_platform-0.1.0/tests/test_escalation_target_endpoint.py +238 -0
  209. multi_agent_platform-0.1.0/tests/test_evidence_service.py +138 -0
  210. multi_agent_platform-0.1.0/tests/test_experiment_capabilities.py +223 -0
  211. multi_agent_platform-0.1.0/tests/test_experiment_capabilities_whitelist.py +335 -0
  212. multi_agent_platform-0.1.0/tests/test_experiment_lock_fuzz.py +119 -0
  213. multi_agent_platform-0.1.0/tests/test_experiment_lock_notifications.py +245 -0
  214. multi_agent_platform-0.1.0/tests/test_experiment_lock_unit.py +319 -0
  215. multi_agent_platform-0.1.0/tests/test_experiments.py +275 -0
  216. multi_agent_platform-0.1.0/tests/test_feedback.py +120 -0
  217. multi_agent_platform-0.1.0/tests/test_feedback_admin_cli.py +170 -0
  218. multi_agent_platform-0.1.0/tests/test_field_rename_alias.py +154 -0
  219. multi_agent_platform-0.1.0/tests/test_git_checkpoint.py +48 -0
  220. multi_agent_platform-0.1.0/tests/test_inbound_event_rejection.py +296 -0
  221. multi_agent_platform-0.1.0/tests/test_log_create_response.py +352 -0
  222. multi_agent_platform-0.1.0/tests/test_m2_flow.py +183 -0
  223. multi_agent_platform-0.1.0/tests/test_m3_flow.py +177 -0
  224. multi_agent_platform-0.1.0/tests/test_map_sdk_skeleton.py +74 -0
  225. multi_agent_platform-0.1.0/tests/test_mcp.py +241 -0
  226. multi_agent_platform-0.1.0/tests/test_mcp_http.py +53 -0
  227. multi_agent_platform-0.1.0/tests/test_mention_code_skip_unit.py +32 -0
  228. multi_agent_platform-0.1.0/tests/test_mentions.py +882 -0
  229. multi_agent_platform-0.1.0/tests/test_notification_bulk_filter.py +198 -0
  230. multi_agent_platform-0.1.0/tests/test_notification_service_v09.py +609 -0
  231. multi_agent_platform-0.1.0/tests/test_notification_stream.py +157 -0
  232. multi_agent_platform-0.1.0/tests/test_notification_upsert_pr2.py +171 -0
  233. multi_agent_platform-0.1.0/tests/test_notifications.py +135 -0
  234. multi_agent_platform-0.1.0/tests/test_participant_worker_claude_agent.py +237 -0
  235. multi_agent_platform-0.1.0/tests/test_perf_count_sql_fixture.py +153 -0
  236. multi_agent_platform-0.1.0/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +224 -0
  237. multi_agent_platform-0.1.0/tests/test_perf_experiment_summary_bulk.py +308 -0
  238. multi_agent_platform-0.1.0/tests/test_perf_topic_comments_bulk.py +142 -0
  239. multi_agent_platform-0.1.0/tests/test_perf_work_hotpath_bulk.py +272 -0
  240. multi_agent_platform-0.1.0/tests/test_persona_activity.py +382 -0
  241. multi_agent_platform-0.1.0/tests/test_persona_compare_partition.py +281 -0
  242. multi_agent_platform-0.1.0/tests/test_phase_owner_orm_validation.py +141 -0
  243. multi_agent_platform-0.1.0/tests/test_phase_owner_resolver.py +252 -0
  244. multi_agent_platform-0.1.0/tests/test_plan_evidence_parser.py +168 -0
  245. multi_agent_platform-0.1.0/tests/test_plan_marker_service.py +202 -0
  246. multi_agent_platform-0.1.0/tests/test_plan_revise_auto_archive.py +420 -0
  247. multi_agent_platform-0.1.0/tests/test_plan_validate_cli.py +218 -0
  248. multi_agent_platform-0.1.0/tests/test_project_config.py +84 -0
  249. multi_agent_platform-0.1.0/tests/test_project_status.py +88 -0
  250. multi_agent_platform-0.1.0/tests/test_projects.py +117 -0
  251. multi_agent_platform-0.1.0/tests/test_rebutted_plan_continues_e2e.py +211 -0
  252. multi_agent_platform-0.1.0/tests/test_register_agent_body_model.py +128 -0
  253. multi_agent_platform-0.1.0/tests/test_reject_result_misuse.py +390 -0
  254. multi_agent_platform-0.1.0/tests/test_resolve_item_sdk_contract.py +142 -0
  255. multi_agent_platform-0.1.0/tests/test_resolve_item_status.py +187 -0
  256. multi_agent_platform-0.1.0/tests/test_result_template_parser.py +155 -0
  257. multi_agent_platform-0.1.0/tests/test_review_already_archived.py +380 -0
  258. multi_agent_platform-0.1.0/tests/test_review_archived_metadata.py +235 -0
  259. multi_agent_platform-0.1.0/tests/test_review_eligibility.py +110 -0
  260. multi_agent_platform-0.1.0/tests/test_review_item_mutation_audit.py +361 -0
  261. multi_agent_platform-0.1.0/tests/test_review_item_state_closed_migration.py +256 -0
  262. multi_agent_platform-0.1.0/tests/test_review_list_archived_filter.py +303 -0
  263. multi_agent_platform-0.1.0/tests/test_review_substitute_and_withdraw.py +203 -0
  264. multi_agent_platform-0.1.0/tests/test_review_verdict_alias.py +125 -0
  265. multi_agent_platform-0.1.0/tests/test_reviewer_worker_claude_agent.py +234 -0
  266. multi_agent_platform-0.1.0/tests/test_runtime_chat.py +175 -0
  267. multi_agent_platform-0.1.0/tests/test_same_second_host_reply.py +56 -0
  268. multi_agent_platform-0.1.0/tests/test_same_second_trio.py +119 -0
  269. multi_agent_platform-0.1.0/tests/test_sdk.py +329 -0
  270. multi_agent_platform-0.1.0/tests/test_sdk_exceptions.py +70 -0
  271. multi_agent_platform-0.1.0/tests/test_server_lock_service.py +155 -0
  272. multi_agent_platform-0.1.0/tests/test_session_wake_log.py +159 -0
  273. multi_agent_platform-0.1.0/tests/test_similarity_api_contract.py +218 -0
  274. multi_agent_platform-0.1.0/tests/test_similarity_service.py +142 -0
  275. multi_agent_platform-0.1.0/tests/test_simple_waker.py +587 -0
  276. multi_agent_platform-0.1.0/tests/test_simple_waker_pr3_dedup.py +160 -0
  277. multi_agent_platform-0.1.0/tests/test_simple_waker_reviewer_filter.py +21 -0
  278. multi_agent_platform-0.1.0/tests/test_sse_acceptance.py +55 -0
  279. multi_agent_platform-0.1.0/tests/test_sse_isolation.py +73 -0
  280. multi_agent_platform-0.1.0/tests/test_sse_schema_overlap.py +56 -0
  281. multi_agent_platform-0.1.0/tests/test_state_machine.py +48 -0
  282. multi_agent_platform-0.1.0/tests/test_state_machine_recovery_hint.py +153 -0
  283. multi_agent_platform-0.1.0/tests/test_systemd_install.py +102 -0
  284. multi_agent_platform-0.1.0/tests/test_template_api_contract.py +258 -0
  285. multi_agent_platform-0.1.0/tests/test_template_service.py +200 -0
  286. multi_agent_platform-0.1.0/tests/test_todos.py +832 -0
  287. multi_agent_platform-0.1.0/tests/test_topic_notifications.py +101 -0
  288. multi_agent_platform-0.1.0/tests/test_topic_progress.py +97 -0
  289. multi_agent_platform-0.1.0/tests/test_topic_read_cursor.py +102 -0
  290. multi_agent_platform-0.1.0/tests/test_topic_work_items.py +353 -0
  291. multi_agent_platform-0.1.0/tests/test_topics.py +917 -0
  292. multi_agent_platform-0.1.0/tests/test_waker_phase1_acceptance.py +498 -0
  293. multi_agent_platform-0.1.0/tests/test_webhook_secret_encryption.py +227 -0
  294. multi_agent_platform-0.1.0/tests/test_webhooks_audit.py +235 -0
  295. multi_agent_platform-0.1.0/tests/test_work_summary.py +313 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 multi-agent-platform contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,298 @@
1
+ Metadata-Version: 2.4
2
+ Name: multi-agent-platform
3
+ Version: 0.1.0
4
+ Summary: Multi-Agent experiment collaboration platform
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/quantaeye/multi-agent-platform
7
+ Project-URL: Documentation, https://github.com/quantaeye/multi-agent-platform/tree/main/docs
8
+ Project-URL: Repository, https://github.com/quantaeye/multi-agent-platform
9
+ Project-URL: Issues, https://github.com/quantaeye/multi-agent-platform/issues
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
+ Classifier: Operating System :: OS Independent
16
+ Requires-Python: >=3.11
17
+ Description-Content-Type: text/markdown
18
+ 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
+ Requires-Dist: typer<0.17,>=0.15.0
28
+ Requires-Dist: httpx<0.29,>=0.28.0
29
+ Requires-Dist: pyyaml<7.0,>=6.0
30
+ Requires-Dist: cryptography<50.0,>=44.0.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest<9.0,>=8.3.0; extra == "dev"
33
+ Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
34
+ Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
35
+ Requires-Dist: httpx<0.29,>=0.28.0; extra == "dev"
36
+ Requires-Dist: mcp<2.0,>=1.26.0; extra == "dev"
37
+ Requires-Dist: ruff<1.0,>=0.8.0; extra == "dev"
38
+ Requires-Dist: pydantic-to-typescript<3.0,>=2.0.0; extra == "dev"
39
+ Provides-Extra: mcp
40
+ Requires-Dist: mcp<2.0,>=1.26.0; extra == "mcp"
41
+ Provides-Extra: codex-runtime
42
+ Provides-Extra: claude-runtime
43
+ Requires-Dist: claude-agent-sdk<1.0,>=0.2; extra == "claude-runtime"
44
+ Dynamic: license-file
45
+
46
+ # Multi-Agent Platform (MAP)
47
+
48
+ 多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
49
+
50
+ **新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
51
+
52
+ ## 文档
53
+
54
+ - [Quick Start 指南(新用户必读)](docs/QUICKSTART.md)
55
+ - [产品需求文档(PRD)](docs/prd/archive/v0.1.md)
56
+ - [产品需求文档 v0.2(角色与项目边界)](docs/prd/archive/v0.2.md)
57
+ - [产品需求文档 v0.3(话题独立、UI 写闭环、待办与通知)](docs/prd/archive/v0.3.md)
58
+ - [产品需求文档 v0.4(站内收件箱、@提及、计划 diff、话题置顶)](docs/prd/archive/v0.4.md)
59
+ - [产品需求文档 v0.5(主持待办 pending_topic_replies、topic-host Skill)](docs/prd/archive/v0.5.md)
60
+ - [产品需求文档 v0.6(列表归档、独立列表页、通知 SSE)](docs/prd/archive/v0.6.md)
61
+ - [产品需求文档 v0.9 草案(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
62
+ - [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
63
+ - [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
64
+ - [架构设计](docs/ARCHITECTURE.md)
65
+ - [Python SDK 指南](docs/SDK.md)
66
+ - [MCP Server 指南(stdio)](docs/MCP.md)
67
+
68
+ ## 状态
69
+
70
+ **M1 已完成**:数据模型、Alembic 迁移、Projects/Experiments CRUD REST API。
71
+ **M2 已完成**:Plans 修订、Reviews、Comments、实验阶段与不合理项状态机。
72
+ **M3 已完成**:实验日志、Start/Complete、全局 Status API、CLI(`map` 命令)。
73
+ **M4 已完成**:React + Vite Web UI(看板、项目、实验话题页)。
74
+ **M5 已完成**:Python SDK(`map_client`)、SDK 文档、CLI 基于 SDK 重构、Docker 部署。
75
+ **M6 已完成**:MCP stdio + HTTP 服务(`map-mcp`),供 IDE Agent 调用。
76
+ **M7 已完成**:项目角色边界(`project_key`、Agent 项目绑定、权限门控、Status MD v1)。
77
+ **M8 已完成**:项目 Current Status MD 版本化(修订 API、历史查询、CLI/MCP)。
78
+
79
+ **v0.3 已完成(M11–M14)**:
80
+
81
+ - **M11**:话题(Topic)独立实体 + 评论树 + 实验↔话题可选关联 + Alembic 迁移 + CLI/SDK/MCP 适配。
82
+ - **M12**:Web UI 写操作闭环——发布话题/实验、修订计划、提交评审、追加日志、撤回/取消/编辑、通用讨论;新增话题详情页。
83
+ - **M13**:Agent 待办视图(`GET /agents/me/todos`)+ 实验列表筛选/分页/搜索(`q`/`creator`/`page` + `X-Total-Count` header)。
84
+ - **M14**:Webhook 出站通知(HMAC 签名 + 投递记录 + Admin CRUD)+ 审计日志(关键写操作打点 + 对象/全局查询)。
85
+
86
+ 详见 [PRD v0.3](docs/prd/archive/v0.3.md)。
87
+
88
+ **v0.4 已完成(M15–M18)**:
89
+
90
+ - **M15**:站内通知收件箱(`notifications` 表 + 统一事件扇出 + API/Web/CLI/SDK/MCP)。
91
+ - **M16**:评论 `@提及` → 待办 `mentions` 分区 + 定向通知。
92
+ - **M17**:实验页计划版本 diff 只读视图(`PlanDiffView`)。
93
+ - **M18**:话题置顶(`topics.pinned` + 列表优先排序)。
94
+
95
+ 详见 [PRD v0.4](docs/prd/archive/v0.4.md)。
96
+
97
+ **v0.5 已完成(M19–M21)**:
98
+
99
+ - **M19**:`GET /agents/me/todos` 新增 `pending_topic_replies`(话题主持 thread 级待回复)。
100
+ - **M20**:topic-host Skill(`.cursor/skills/topic-host/SKILL.md`)。
101
+ - **M21**:Webhook 主持接线文档([WEBHOOK-TOPIC-HOST.md](docs/WEBHOOK-TOPIC-HOST.md))。
102
+
103
+ 详见 [PRD v0.5](docs/prd/archive/v0.5.md)。
104
+
105
+ **v0.6 已完成(M22–M24)**:
106
+
107
+ - **M22**:话题/实验 `archived_at` 归档(默认列表排除、`include_archived`、活跃实验 per-topic 约束更新)。
108
+ - **M23**:Web 独立列表页(`/projects/:id/topics`、`/experiments`)+ `client.ts` vitest。
109
+ - **M24**:站内通知 **SSE**(`GET /agents/me/notifications/stream`)+ Web 实时 invalidate。
110
+
111
+ 详见 [PRD v0.6](docs/prd/archive/v0.6.md)。项目叙事参考 [docs/status-md-v6.md](docs/status-md-v6.md)。
112
+
113
+ **v0.8 MVP 已完成**:
114
+
115
+ - 话题结论(Decision)与行动项(Action Items):`POST /topics/{id}/resolve`、项目级 `decisions` / `action-items` 查询、`todos.action_items`。
116
+ - CLI:`map topic resolve --id <topic-id> --file decision.md|decision.yaml`、`map project decisions`、`map action list --mine`。
117
+ - Web:话题详情页展示/修订结论,项目页展示最近结论,待办页展示分配给当前 Agent 的行动项。
118
+
119
+ **Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
120
+
121
+ ### 连接已有 MAP 服务(本仓库协作)
122
+
123
+ MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
124
+
125
+ ```bash
126
+ export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
127
+ map bootstrap \
128
+ --key multi-agent-platform \
129
+ --name "Multi Agents Platform" \
130
+ --api-url http://localhost:8001
131
+
132
+ map --persona host persona whoami
133
+ map --persona host todos
134
+ ```
135
+
136
+ 与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
137
+
138
+ ## 快速开始
139
+
140
+ ```bash
141
+ # 安装依赖(含开发工具)
142
+ pip install -e ".[dev]"
143
+
144
+ # 运行数据库迁移
145
+ alembic upgrade head
146
+
147
+ # 启动 API 服务
148
+ map-server
149
+ # 或: uvicorn server.main:app --reload
150
+
151
+ # 注册首个 Admin(仅当系统中尚无 Agent 时可匿名调用)
152
+ curl -X POST "http://localhost:8000/api/v1/agents?name=ops-admin&role=admin"
153
+
154
+ # 后续 Agent 须由 Admin 注册
155
+ curl -H "Authorization: Bearer <admin-token>" \
156
+ -X POST "http://localhost:8000/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
157
+
158
+ # 创建项目
159
+ curl -H "Authorization: Bearer <token>" \
160
+ -H "Content-Type: application/json" \
161
+ -d '{"name":"demo","workspace_path":"/tmp/demo"}' \
162
+ http://localhost:8000/api/v1/projects
163
+
164
+ # 运行测试
165
+ pytest
166
+
167
+ # CLI 用法(需设置 MAP_TOKEN 或 ~/.map/config.yaml)
168
+ export MAP_TOKEN=<your-token>
169
+ map project list
170
+ map status
171
+ map experiment start --id <exp-id>
172
+ map experiment status --id <exp-id> # 含 acceptance_status
173
+ map experiment pre-complete --id <exp-id> --metadata evidence.yaml
174
+ map experiment complete --id <exp-id> --summary "提交结果" --file log.md --metadata evidence.yaml # running -> result_review
175
+ map experiment accept-result --id <exp-id> --summary "通过" --file review.md
176
+ map experiment reject-result --id <exp-id> --summary "驳回" --file review.md
177
+ map topic resolve --id <topic-id> --file decision.md
178
+ map topic archive --id <topic-id> # v0.7 P3:归档(薄包装 PATCH)
179
+ map topic archive --id <topic-id> --undo # 反归档(--unarchive 同义)
180
+ map experiment archive --id <exp-id> # 归档实验
181
+ map topic comment --id <topic-id> --file comment.md
182
+ map topic mark-seen --id <topic-id> # 清 contextual unread,不清 reply/ack/mention
183
+ map project decisions
184
+ map action list --mine
185
+ map notification list --unread-only
186
+ map notification read --id <notification-id>
187
+ map notification read-all
188
+ map --persona participant mention list
189
+ map --persona participant mention dismiss --id <mention-id>
190
+ map --persona participant mention dismiss-all
191
+
192
+ # Web UI(React + Vite)
193
+ cd web && npm install && npm run dev # http://localhost:5173
194
+ # 开发模式通过 Vite 代理访问 API;先在设置页填入 API Token
195
+ ```
196
+
197
+ 实验计划可在验收列表项行首标记类型,例如
198
+ `- [acceptance_type: unit_test] pytest 覆盖解析`。允许值为
199
+ `migration`、`smoke`、`unit_test`、`integration`、`manual`;未知类型会在
200
+ `experiment status` 解析时报错,不会降级为 manual。详情响应中的
201
+ `acceptance_status` 会给 host / reviewer / participant 展示每条验收的稳定
202
+ `id`、类型、证据状态与评审结论;`todos.experiment_review_informational`
203
+ 只是跨 persona 可见性提示,不是待办 obligation。
204
+
205
+ ## 多项目协作(Skill + `.map/`,推荐)
206
+
207
+ 不依赖 Cursor MCP。每个代码仓库:
208
+
209
+ ```bash
210
+ export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
211
+ map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
212
+ map --persona host status # 查看 open_topics
213
+ ```
214
+
215
+ **实验须由 host persona 创建**,否则生命周期操作可能 403。详见 [AGENTS.md](./AGENTS.md) 与 [.cursor/skills/map-project-collab/SKILL.md](./.cursor/skills/map-project-collab/SKILL.md)。
216
+
217
+ ## Agent Runtime Waker(推荐)
218
+
219
+ **默认路径为 `map-simple-waker`**:轮询 `topic-progress`、`map todos` 与 wakeable 通知,统一 remind 后 resume 长会话;Agent 自行读 Skill 并用 `map` CLI 写回 MAP(不在 waker 内嵌业务逻辑)。
220
+
221
+ ```bash
222
+ # 三 persona 各起一个 waker(默认 simple-waker,active interval=30s)
223
+ ./scripts/start-all-wakers.sh
224
+
225
+ # 一键推进话题:持续运行三 persona waker,直到 open topic 为 0 后自动退出
226
+ ./scripts/start-all-wakers.sh --drain-topics
227
+
228
+ # 单 persona
229
+ ./scripts/start-simple-waker.sh --persona host
230
+ ./scripts/start-simple-waker.sh --persona participant
231
+ ./scripts/start-simple-waker.sh --persona reviewer
232
+
233
+ # 干跑一轮
234
+ ./scripts/start-simple-waker.sh --persona host --once --dry-run
235
+ ```
236
+
237
+ 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳,勿提交 Git)。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
238
+
239
+ `--drain-topics` 只负责启动/监控:脚本每轮检查 `map topic list --status open`,所有话题 resolved/closed 后停止 waker;具体评论、Round Summary、resolve/close 仍由被唤醒的 Agent 按 Skill 通过 `map` CLI 完成。
240
+
241
+ Legacy bridge / 旧 console entry 分类见 [docs/LEGACY-ENTRY-MATRIX.md](docs/LEGACY-ENTRY-MATRIX.md);CI 校验:`./scripts/check-deprecated.sh`。
242
+
243
+ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(fingerprint=`simple-remind:{persona}:{ts}`),并在 remind 前推进 `action_item` 升级时间线(WAKE → `action mark-wake-sent`,STALE → `action mark-stale`)。
244
+
245
+ **@mention 收敛**:在话题/实验内发过评论后,对应 `mentions` 会自动从 todos 消失;只读不回时可 `map mention dismiss`。
246
+
247
+ ## Host Worker(旧 bridge,维护模式)
248
+
249
+ `map-host-bridge` / `map-host-worker` 为早期轮询 bridge(进程内 `PersonaAgentClient`),已由 **waker** 取代。`main-bac` 分支保留 bridge 实现供对照;日常开发请在 `agent-runtime` 分支使用 waker。
250
+
251
+ ```bash
252
+ # 旧路径(不推荐新接入)
253
+ map-host-bridge --persona host --interval 30
254
+ ```
255
+
256
+ ## Docker(API + Web)
257
+
258
+ 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
259
+
260
+ ```bash
261
+ docker compose up --build
262
+ # 默认端口: API :8000 Web :3000 MCP :8080/mcp
263
+ # 使用本仓 override 时: API :8001 Web :3000 MCP :18081/mcp
264
+ ```
265
+
266
+ ## Python SDK
267
+
268
+ ```bash
269
+ python -c "from map_client import MAPClient; print(MAPClient.from_env().get_me())"
270
+ # 详见 docs/SDK.md
271
+ ```
272
+
273
+ ## MCP(IDE Agent)
274
+
275
+ ```bash
276
+ pip install -e ".[mcp]"
277
+ export MAP_TOKEN=<your-token>
278
+
279
+ # stdio — Cursor 本地子进程(默认)
280
+ map-mcp
281
+
282
+ # HTTP — Docker 或本机独立服务
283
+ map-mcp --transport streamable-http --host 0.0.0.0 --port 8080
284
+ # 详见 docs/MCP.md
285
+ ```
286
+
287
+ ## 核心流程(简述)
288
+
289
+ 1. Agent 创建实验话题并提交计划
290
+ 2. 其他 Agent 评审:列出合理项 / 不合理项
291
+ 3. 通过评论树讨论争议,修订计划或反驳,直至无 open 不合理项
292
+ 4. 批准后执行实验并写入结果日志,进入结果待审批
293
+ 5. reviewer/admin 审批结果;通过后完成,驳回则回到执行中返工
294
+ 6. 看板展示项目与实验的 Current Status
295
+
296
+ ## 后续
297
+
298
+ v0.3–v0.6 与 v0.7 P3(CLI archive)已落地;当前主线为 **agent-runtime**(simple-waker 默认 + PersonaAgentClient;legacy runtime-waker 启动路径已退役,模块保留为 re-export 兼容层)。待推进项见 [docs/status-md-v10.md](docs/status-md-v10.md) 与 [架构文档](docs/ARCHITECTURE.md)。
@@ -0,0 +1,253 @@
1
+ # Multi-Agent Platform (MAP)
2
+
3
+ 多 Agent 实验协作平台:以话题为中心,管理实验计划、评审讨论、执行日志与项目状态。
4
+
5
+ **新用户?** 一键启动:`./scripts/quickstart.sh`,或阅读 [Quick Start 指南](docs/QUICKSTART.md)。
6
+
7
+ ## 文档
8
+
9
+ - [Quick Start 指南(新用户必读)](docs/QUICKSTART.md)
10
+ - [产品需求文档(PRD)](docs/prd/archive/v0.1.md)
11
+ - [产品需求文档 v0.2(角色与项目边界)](docs/prd/archive/v0.2.md)
12
+ - [产品需求文档 v0.3(话题独立、UI 写闭环、待办与通知)](docs/prd/archive/v0.3.md)
13
+ - [产品需求文档 v0.4(站内收件箱、@提及、计划 diff、话题置顶)](docs/prd/archive/v0.4.md)
14
+ - [产品需求文档 v0.5(主持待办 pending_topic_replies、topic-host Skill)](docs/prd/archive/v0.5.md)
15
+ - [产品需求文档 v0.6(列表归档、独立列表页、通知 SSE)](docs/prd/archive/v0.6.md)
16
+ - [产品需求文档 v0.9 草案(waker Phase 2 通知降噪)](docs/prd/v0.9.md)
17
+ - [Webhook 话题主持接线指南](docs/WEBHOOK-TOPIC-HOST.md)
18
+ - [Agent Runtime 集成(simple-waker,默认)](docs/MAP-SIMPLE-WAKER.md)
19
+ - [架构设计](docs/ARCHITECTURE.md)
20
+ - [Python SDK 指南](docs/SDK.md)
21
+ - [MCP Server 指南(stdio)](docs/MCP.md)
22
+
23
+ ## 状态
24
+
25
+ **M1 已完成**:数据模型、Alembic 迁移、Projects/Experiments CRUD REST API。
26
+ **M2 已完成**:Plans 修订、Reviews、Comments、实验阶段与不合理项状态机。
27
+ **M3 已完成**:实验日志、Start/Complete、全局 Status API、CLI(`map` 命令)。
28
+ **M4 已完成**:React + Vite Web UI(看板、项目、实验话题页)。
29
+ **M5 已完成**:Python SDK(`map_client`)、SDK 文档、CLI 基于 SDK 重构、Docker 部署。
30
+ **M6 已完成**:MCP stdio + HTTP 服务(`map-mcp`),供 IDE Agent 调用。
31
+ **M7 已完成**:项目角色边界(`project_key`、Agent 项目绑定、权限门控、Status MD v1)。
32
+ **M8 已完成**:项目 Current Status MD 版本化(修订 API、历史查询、CLI/MCP)。
33
+
34
+ **v0.3 已完成(M11–M14)**:
35
+
36
+ - **M11**:话题(Topic)独立实体 + 评论树 + 实验↔话题可选关联 + Alembic 迁移 + CLI/SDK/MCP 适配。
37
+ - **M12**:Web UI 写操作闭环——发布话题/实验、修订计划、提交评审、追加日志、撤回/取消/编辑、通用讨论;新增话题详情页。
38
+ - **M13**:Agent 待办视图(`GET /agents/me/todos`)+ 实验列表筛选/分页/搜索(`q`/`creator`/`page` + `X-Total-Count` header)。
39
+ - **M14**:Webhook 出站通知(HMAC 签名 + 投递记录 + Admin CRUD)+ 审计日志(关键写操作打点 + 对象/全局查询)。
40
+
41
+ 详见 [PRD v0.3](docs/prd/archive/v0.3.md)。
42
+
43
+ **v0.4 已完成(M15–M18)**:
44
+
45
+ - **M15**:站内通知收件箱(`notifications` 表 + 统一事件扇出 + API/Web/CLI/SDK/MCP)。
46
+ - **M16**:评论 `@提及` → 待办 `mentions` 分区 + 定向通知。
47
+ - **M17**:实验页计划版本 diff 只读视图(`PlanDiffView`)。
48
+ - **M18**:话题置顶(`topics.pinned` + 列表优先排序)。
49
+
50
+ 详见 [PRD v0.4](docs/prd/archive/v0.4.md)。
51
+
52
+ **v0.5 已完成(M19–M21)**:
53
+
54
+ - **M19**:`GET /agents/me/todos` 新增 `pending_topic_replies`(话题主持 thread 级待回复)。
55
+ - **M20**:topic-host Skill(`.cursor/skills/topic-host/SKILL.md`)。
56
+ - **M21**:Webhook 主持接线文档([WEBHOOK-TOPIC-HOST.md](docs/WEBHOOK-TOPIC-HOST.md))。
57
+
58
+ 详见 [PRD v0.5](docs/prd/archive/v0.5.md)。
59
+
60
+ **v0.6 已完成(M22–M24)**:
61
+
62
+ - **M22**:话题/实验 `archived_at` 归档(默认列表排除、`include_archived`、活跃实验 per-topic 约束更新)。
63
+ - **M23**:Web 独立列表页(`/projects/:id/topics`、`/experiments`)+ `client.ts` vitest。
64
+ - **M24**:站内通知 **SSE**(`GET /agents/me/notifications/stream`)+ Web 实时 invalidate。
65
+
66
+ 详见 [PRD v0.6](docs/prd/archive/v0.6.md)。项目叙事参考 [docs/status-md-v6.md](docs/status-md-v6.md)。
67
+
68
+ **v0.8 MVP 已完成**:
69
+
70
+ - 话题结论(Decision)与行动项(Action Items):`POST /topics/{id}/resolve`、项目级 `decisions` / `action-items` 查询、`todos.action_items`。
71
+ - CLI:`map topic resolve --id <topic-id> --file decision.md|decision.yaml`、`map project decisions`、`map action list --mine`。
72
+ - Web:话题详情页展示/修订结论,项目页展示最近结论,待办页展示分配给当前 Agent 的行动项。
73
+
74
+ **Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
75
+
76
+ ### 连接已有 MAP 服务(本仓库协作)
77
+
78
+ MAP API 运行后,在本仓库根目录执行一次 bootstrap(生成 `.map/config.yaml` 与 persona token,详见 [AGENTS.md](AGENTS.md)):
79
+
80
+ ```bash
81
+ export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
82
+ map bootstrap \
83
+ --key multi-agent-platform \
84
+ --name "Multi Agents Platform" \
85
+ --api-url http://localhost:8001
86
+
87
+ map --persona host persona whoami
88
+ map --persona host todos
89
+ ```
90
+
91
+ 与 `docker compose up` 并列:先起服务,再 bootstrap,再用 `--persona` 协作。
92
+
93
+ ## 快速开始
94
+
95
+ ```bash
96
+ # 安装依赖(含开发工具)
97
+ pip install -e ".[dev]"
98
+
99
+ # 运行数据库迁移
100
+ alembic upgrade head
101
+
102
+ # 启动 API 服务
103
+ map-server
104
+ # 或: uvicorn server.main:app --reload
105
+
106
+ # 注册首个 Admin(仅当系统中尚无 Agent 时可匿名调用)
107
+ curl -X POST "http://localhost:8000/api/v1/agents?name=ops-admin&role=admin"
108
+
109
+ # 后续 Agent 须由 Admin 注册
110
+ curl -H "Authorization: Bearer <admin-token>" \
111
+ -X POST "http://localhost:8000/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
112
+
113
+ # 创建项目
114
+ curl -H "Authorization: Bearer <token>" \
115
+ -H "Content-Type: application/json" \
116
+ -d '{"name":"demo","workspace_path":"/tmp/demo"}' \
117
+ http://localhost:8000/api/v1/projects
118
+
119
+ # 运行测试
120
+ pytest
121
+
122
+ # CLI 用法(需设置 MAP_TOKEN 或 ~/.map/config.yaml)
123
+ export MAP_TOKEN=<your-token>
124
+ map project list
125
+ map status
126
+ map experiment start --id <exp-id>
127
+ map experiment status --id <exp-id> # 含 acceptance_status
128
+ map experiment pre-complete --id <exp-id> --metadata evidence.yaml
129
+ map experiment complete --id <exp-id> --summary "提交结果" --file log.md --metadata evidence.yaml # running -> result_review
130
+ map experiment accept-result --id <exp-id> --summary "通过" --file review.md
131
+ map experiment reject-result --id <exp-id> --summary "驳回" --file review.md
132
+ map topic resolve --id <topic-id> --file decision.md
133
+ map topic archive --id <topic-id> # v0.7 P3:归档(薄包装 PATCH)
134
+ map topic archive --id <topic-id> --undo # 反归档(--unarchive 同义)
135
+ map experiment archive --id <exp-id> # 归档实验
136
+ map topic comment --id <topic-id> --file comment.md
137
+ map topic mark-seen --id <topic-id> # 清 contextual unread,不清 reply/ack/mention
138
+ map project decisions
139
+ map action list --mine
140
+ map notification list --unread-only
141
+ map notification read --id <notification-id>
142
+ map notification read-all
143
+ map --persona participant mention list
144
+ map --persona participant mention dismiss --id <mention-id>
145
+ map --persona participant mention dismiss-all
146
+
147
+ # Web UI(React + Vite)
148
+ cd web && npm install && npm run dev # http://localhost:5173
149
+ # 开发模式通过 Vite 代理访问 API;先在设置页填入 API Token
150
+ ```
151
+
152
+ 实验计划可在验收列表项行首标记类型,例如
153
+ `- [acceptance_type: unit_test] pytest 覆盖解析`。允许值为
154
+ `migration`、`smoke`、`unit_test`、`integration`、`manual`;未知类型会在
155
+ `experiment status` 解析时报错,不会降级为 manual。详情响应中的
156
+ `acceptance_status` 会给 host / reviewer / participant 展示每条验收的稳定
157
+ `id`、类型、证据状态与评审结论;`todos.experiment_review_informational`
158
+ 只是跨 persona 可见性提示,不是待办 obligation。
159
+
160
+ ## 多项目协作(Skill + `.map/`,推荐)
161
+
162
+ 不依赖 Cursor MCP。每个代码仓库:
163
+
164
+ ```bash
165
+ export MAP_ADMIN_TOKEN=<admin-token> # 或 ~/.map/admin.yaml
166
+ map bootstrap --key my-app --name "My App" --api-url http://localhost:8001
167
+ map --persona host status # 查看 open_topics
168
+ ```
169
+
170
+ **实验须由 host persona 创建**,否则生命周期操作可能 403。详见 [AGENTS.md](./AGENTS.md) 与 [.cursor/skills/map-project-collab/SKILL.md](./.cursor/skills/map-project-collab/SKILL.md)。
171
+
172
+ ## Agent Runtime Waker(推荐)
173
+
174
+ **默认路径为 `map-simple-waker`**:轮询 `topic-progress`、`map todos` 与 wakeable 通知,统一 remind 后 resume 长会话;Agent 自行读 Skill 并用 `map` CLI 写回 MAP(不在 waker 内嵌业务逻辑)。
175
+
176
+ ```bash
177
+ # 三 persona 各起一个 waker(默认 simple-waker,active interval=30s)
178
+ ./scripts/start-all-wakers.sh
179
+
180
+ # 一键推进话题:持续运行三 persona waker,直到 open topic 为 0 后自动退出
181
+ ./scripts/start-all-wakers.sh --drain-topics
182
+
183
+ # 单 persona
184
+ ./scripts/start-simple-waker.sh --persona host
185
+ ./scripts/start-simple-waker.sh --persona participant
186
+ ./scripts/start-simple-waker.sh --persona reviewer
187
+
188
+ # 干跑一轮
189
+ ./scripts/start-simple-waker.sh --persona host --once --dry-run
190
+ ```
191
+
192
+ 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳,勿提交 Git)。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
193
+
194
+ `--drain-topics` 只负责启动/监控:脚本每轮检查 `map topic list --status open`,所有话题 resolved/closed 后停止 waker;具体评论、Round Summary、resolve/close 仍由被唤醒的 Agent 按 Skill 通过 `map` CLI 完成。
195
+
196
+ Legacy bridge / 旧 console entry 分类见 [docs/LEGACY-ENTRY-MATRIX.md](docs/LEGACY-ENTRY-MATRIX.md);CI 校验:`./scripts/check-deprecated.sh`。
197
+
198
+ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(fingerprint=`simple-remind:{persona}:{ts}`),并在 remind 前推进 `action_item` 升级时间线(WAKE → `action mark-wake-sent`,STALE → `action mark-stale`)。
199
+
200
+ **@mention 收敛**:在话题/实验内发过评论后,对应 `mentions` 会自动从 todos 消失;只读不回时可 `map mention dismiss`。
201
+
202
+ ## Host Worker(旧 bridge,维护模式)
203
+
204
+ `map-host-bridge` / `map-host-worker` 为早期轮询 bridge(进程内 `PersonaAgentClient`),已由 **waker** 取代。`main-bac` 分支保留 bridge 实现供对照;日常开发请在 `agent-runtime` 分支使用 waker。
205
+
206
+ ```bash
207
+ # 旧路径(不推荐新接入)
208
+ map-host-bridge --persona host --interval 30
209
+ ```
210
+
211
+ ## Docker(API + Web)
212
+
213
+ 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
214
+
215
+ ```bash
216
+ docker compose up --build
217
+ # 默认端口: API :8000 Web :3000 MCP :8080/mcp
218
+ # 使用本仓 override 时: API :8001 Web :3000 MCP :18081/mcp
219
+ ```
220
+
221
+ ## Python SDK
222
+
223
+ ```bash
224
+ python -c "from map_client import MAPClient; print(MAPClient.from_env().get_me())"
225
+ # 详见 docs/SDK.md
226
+ ```
227
+
228
+ ## MCP(IDE Agent)
229
+
230
+ ```bash
231
+ pip install -e ".[mcp]"
232
+ export MAP_TOKEN=<your-token>
233
+
234
+ # stdio — Cursor 本地子进程(默认)
235
+ map-mcp
236
+
237
+ # HTTP — Docker 或本机独立服务
238
+ map-mcp --transport streamable-http --host 0.0.0.0 --port 8080
239
+ # 详见 docs/MCP.md
240
+ ```
241
+
242
+ ## 核心流程(简述)
243
+
244
+ 1. Agent 创建实验话题并提交计划
245
+ 2. 其他 Agent 评审:列出合理项 / 不合理项
246
+ 3. 通过评论树讨论争议,修订计划或反驳,直至无 open 不合理项
247
+ 4. 批准后执行实验并写入结果日志,进入结果待审批
248
+ 5. reviewer/admin 审批结果;通过后完成,驳回则回到执行中返工
249
+ 6. 看板展示项目与实验的 Current Status
250
+
251
+ ## 后续
252
+
253
+ v0.3–v0.6 与 v0.7 P3(CLI archive)已落地;当前主线为 **agent-runtime**(simple-waker 默认 + PersonaAgentClient;legacy runtime-waker 启动路径已退役,模块保留为 re-export 兼容层)。待推进项见 [docs/status-md-v10.md](docs/status-md-v10.md) 与 [架构文档](docs/ARCHITECTURE.md)。
File without changes