multi-agent-platform 0.3.2__tar.gz → 0.4.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 (394) hide show
  1. {multi_agent_platform-0.3.2/multi_agent_platform.egg-info → multi_agent_platform-0.4.0}/PKG-INFO +10 -11
  2. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/README.md +9 -9
  3. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/action_item_escalation.py +5 -5
  4. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/agent_client.py +4 -4
  5. multi_agent_platform-0.4.0/cli/commands/auth.py +104 -0
  6. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/experiment.py +234 -69
  7. multi_agent_platform-0.4.0/cli/commands/fs.py +402 -0
  8. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/project.py +1 -4
  9. multi_agent_platform-0.4.0/cli/commands/skill.py +645 -0
  10. multi_agent_platform-0.4.0/cli/commands/topic.py +982 -0
  11. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/e2e_collab.py +34 -19
  12. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/local_cache.py +0 -1
  13. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/main.py +138 -285
  14. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/map_command_client.py +21 -3
  15. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/orchestrator.py +2 -4
  16. multi_agent_platform-0.4.0/cli/persona_compare.py +297 -0
  17. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/project_export.py +2 -5
  18. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/runtime/run_lock.py +7 -7
  19. multi_agent_platform-0.4.0/cli/shortid.py +111 -0
  20. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/simple_waker.py +6 -6
  21. multi_agent_platform-0.4.0/cli/skills/experiment-host/SKILL.md +106 -0
  22. multi_agent_platform-0.4.0/cli/skills/experiment-host/map-plugin.yaml +11 -0
  23. multi_agent_platform-0.4.0/cli/skills/experiment-host/references/execution-cookbook.md +92 -0
  24. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/skills/experiment-host/references/lifecycle-transitions.md +1 -1
  25. multi_agent_platform-0.4.0/cli/skills/experiment-reviewer/SKILL.md +69 -0
  26. multi_agent_platform-0.4.0/cli/skills/experiment-reviewer/map-plugin.yaml +11 -0
  27. multi_agent_platform-0.4.0/cli/skills/map-project-collab/SKILL.md +133 -0
  28. multi_agent_platform-0.4.0/cli/skills/map-project-collab/map-plugin.yaml +11 -0
  29. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/skills/map-project-collab/references/bootstrap-troubleshooting.md +1 -1
  30. multi_agent_platform-0.4.0/cli/skills/map-project-collab/references/commands.md +152 -0
  31. multi_agent_platform-0.4.0/cli/skills/map-project-collab/references/file-reference.md +36 -0
  32. multi_agent_platform-0.4.0/cli/skills/map-project-collab/references/platform-feedback.md +37 -0
  33. multi_agent_platform-0.4.0/cli/skills/map-project-collab/references/wake.md +51 -0
  34. multi_agent_platform-0.4.0/cli/skills/map-project-collab/references/waker-mode.md +30 -0
  35. multi_agent_platform-0.4.0/cli/skills/topic-host/SKILL.md +117 -0
  36. multi_agent_platform-0.4.0/cli/skills/topic-host/map-plugin.yaml +11 -0
  37. multi_agent_platform-0.4.0/cli/skills/topic-host/references/experiment-gate-rubric.md +141 -0
  38. multi_agent_platform-0.4.0/cli/skills/topic-host/references/host-checklist.md +114 -0
  39. multi_agent_platform-0.4.0/cli/skills/topic-participant/SKILL.md +95 -0
  40. multi_agent_platform-0.4.0/cli/skills/topic-participant/map-plugin.yaml +11 -0
  41. multi_agent_platform-0.4.0/cli/skills/topic-participant/references/participant-checklist.md +76 -0
  42. multi_agent_platform-0.4.0/cli/subcommand_format.py +126 -0
  43. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0/multi_agent_platform.egg-info}/PKG-INFO +10 -11
  44. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/multi_agent_platform.egg-info/SOURCES.txt +65 -11
  45. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/multi_agent_platform.egg-info/requires.txt +0 -2
  46. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/multi_agent_platform.egg-info/top_level.txt +1 -0
  47. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/pyproject.toml +4 -9
  48. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/bootstrap.py +163 -2
  49. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/client.py +59 -1
  50. multi_agent_platform-0.4.0/sdk/python/map_fs/__init__.py +43 -0
  51. multi_agent_platform-0.4.0/sdk/python/map_fs/parser.py +566 -0
  52. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_sdk/__init__.py +1 -1
  53. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_types/__init__.py +23 -2
  54. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_types/enums.py +15 -0
  55. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/__init__.py +345 -0
  56. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/a2a.py +57 -0
  57. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/agent.py +57 -0
  58. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/agent_work.py +95 -0
  59. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/audit.py +81 -0
  60. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/base.py +7 -0
  61. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/comment.py +36 -0
  62. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/experiment.py +426 -0
  63. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/feedback.py +47 -0
  64. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/fs.py +90 -0
  65. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/inbound_event.py +57 -0
  66. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/notification.py +39 -0
  67. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/plan.py +38 -0
  68. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/project.py +138 -0
  69. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/review.py +64 -0
  70. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/todo.py +180 -0
  71. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/topic.py +233 -0
  72. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/topic_progress.py +63 -0
  73. multi_agent_platform-0.4.0/sdk/python/map_types/schemas/webhook.py +48 -0
  74. multi_agent_platform-0.4.0/server/api/a2a.py +194 -0
  75. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/bootstrap.py +40 -0
  76. multi_agent_platform-0.4.0/server/api/docs.py +80 -0
  77. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/experiments.py +11 -2
  78. multi_agent_platform-0.4.0/server/api/fs.py +174 -0
  79. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/router.py +6 -0
  80. multi_agent_platform-0.4.0/server/api/topics.py +282 -0
  81. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/config.py +4 -0
  82. multi_agent_platform-0.4.0/server/domain/a2a_mapping.py +79 -0
  83. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/models.py +35 -3
  84. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/state_machine.py +40 -21
  85. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/main.py +72 -0
  86. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/action_item_service.py +3 -3
  87. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/agent_work_service.py +9 -0
  88. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/auth.py +47 -0
  89. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/bootstrap_service.py +4 -2
  90. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/escalation_resolver.py +2 -2
  91. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/experiment_capabilities_service.py +24 -2
  92. multi_agent_platform-0.4.0/server/services/fs_source_service.py +412 -0
  93. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/lock_service.py +3 -3
  94. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/log_service.py +62 -13
  95. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/mention_service.py +2 -2
  96. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/notification_service.py +8 -8
  97. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/persona_activity_service.py +3 -3
  98. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/phase_owner_resolver.py +24 -3
  99. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/phase_service.py +89 -11
  100. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/plan_marker_service.py +41 -14
  101. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/plan_service.py +2 -2
  102. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/platform_feedback_service.py +2 -2
  103. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/project_service.py +101 -16
  104. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/project_status_service.py +2 -2
  105. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/review_service.py +2 -2
  106. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/similarity_service.py +6 -0
  107. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/todo_service.py +4 -4
  108. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_ack_service.py +20 -9
  109. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_action_item_ops.py +3 -3
  110. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_comment_service.py +17 -5
  111. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_lifecycle_service.py +45 -47
  112. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_resolve_service.py +3 -3
  113. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/webhook_service.py +3 -3
  114. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_18a64691_linkage.py +10 -5
  115. multi_agent_platform-0.4.0/tests/test_a2a.py +200 -0
  116. multi_agent_platform-0.3.2/tests/test_a2_action_item_cascade.py → multi_agent_platform-0.4.0/tests/test_action_item_cascade.py +146 -131
  117. multi_agent_platform-0.3.2/tests/test_b_action_item_stale.py → multi_agent_platform-0.4.0/tests/test_action_item_stale.py +3 -3
  118. multi_agent_platform-0.3.2/tests/test_b_acceptance.py → multi_agent_platform-0.4.0/tests/test_action_item_timeline_acceptance.py +13 -13
  119. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_endpoints.py → multi_agent_platform-0.4.0/tests/test_action_item_wake_endpoints.py +56 -48
  120. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_stale.py → multi_agent_platform-0.4.0/tests/test_action_item_wake_stale.py +16 -16
  121. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_stale_notifications.py → multi_agent_platform-0.4.0/tests/test_action_item_wake_stale_notifications.py +43 -42
  122. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_action_items.py +116 -212
  123. multi_agent_platform-0.4.0/tests/test_agent_work.py +79 -0
  124. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_archive_lint_service.py +2 -2
  125. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_auth_experiment_access.py +2 -2
  126. multi_agent_platform-0.4.0/tests/test_auth_reissue.py +149 -0
  127. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_bootstrap.py +103 -0
  128. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_clear_action_template.py +6 -5
  129. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli.py +93 -70
  130. multi_agent_platform-0.4.0/tests/test_cli_json_schema.py +273 -0
  131. multi_agent_platform-0.4.0/tests/test_cli_shortid.py +297 -0
  132. multi_agent_platform-0.4.0/tests/test_cli_subcommand_format.py +204 -0
  133. multi_agent_platform-0.4.0/tests/test_direct_mode.py +174 -0
  134. multi_agent_platform-0.4.0/tests/test_docs_consistency.py +218 -0
  135. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_docs_inventory.py +36 -12
  136. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_fast_gate_whitelist_complete.py +1 -1
  137. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_agent_work_service.py +3 -2
  138. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_agents.py +3 -2
  139. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_experiment_capabilities_service.py +3 -2
  140. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_experiments_projects.py +3 -2
  141. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_mention_service.py +3 -2
  142. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_notification_service.py +3 -2
  143. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_phase_service.py +3 -2
  144. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_project_service.py +3 -2
  145. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_todo_service.py +3 -2
  146. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_topic_comment_service.py +3 -2
  147. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_topic_service.py +3 -2
  148. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_topic_work_item_service.py +3 -2
  149. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_mypy_strict_topics.py +5 -5
  150. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_version_single_source.py +1 -1
  151. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_escalation_resolver.py +2 -2
  152. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_executor.py +0 -1
  153. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_lock_notifications.py +7 -7
  154. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_lock_unit.py +9 -9
  155. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiments.py +23 -0
  156. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_field_rename_alias.py +2 -2
  157. multi_agent_platform-0.4.0/tests/test_fs_source.py +556 -0
  158. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_local_cache.py +0 -4
  159. multi_agent_platform-0.4.0/tests/test_m55_error_envelope.py +338 -0
  160. multi_agent_platform-0.4.0/tests/test_m57_log_slim_form.py +376 -0
  161. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_mcp.py +29 -18
  162. multi_agent_platform-0.4.0/tests/test_mentions.py +434 -0
  163. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_notification_bulk_filter.py +6 -6
  164. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_notification_service_v09.py +3 -3
  165. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_orchestrator.py +0 -3
  166. multi_agent_platform-0.3.2/tests/test_cleanup_exp_b_paging_seven_endpoints.py → multi_agent_platform-0.4.0/tests/test_paging_seven_endpoints.py +17 -13
  167. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_perf_work_hotpath_bulk.py +2 -2
  168. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_persona_activity.py +8 -8
  169. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_plan_revise_auto_archive.py +5 -1
  170. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_project_export.py +1 -5
  171. multi_agent_platform-0.4.0/tests/test_same_second_host_reply.py +62 -0
  172. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_same_second_trio.py +25 -39
  173. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_sdk.py +87 -60
  174. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_server_lock_service.py +6 -6
  175. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_simple_waker.py +3 -3
  176. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_skill_install.py +1 -6
  177. multi_agent_platform-0.4.0/tests/test_skill_versioning.py +398 -0
  178. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_todos.py +164 -202
  179. multi_agent_platform-0.4.0/tests/test_topic_migrate.py +251 -0
  180. multi_agent_platform-0.4.0/tests/test_topic_notifications.py +57 -0
  181. multi_agent_platform-0.4.0/tests/test_topic_progress.py +89 -0
  182. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_topic_read_cursor.py +42 -38
  183. multi_agent_platform-0.4.0/tests/test_topic_routing.py +522 -0
  184. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_topic_work_items.py +128 -151
  185. multi_agent_platform-0.4.0/tests/test_topics.py +537 -0
  186. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_waker_phase1_acceptance.py +31 -24
  187. multi_agent_platform-0.3.2/tests/test_b_waker_should_wake_action_item.py → multi_agent_platform-0.4.0/tests/test_waker_should_wake_action_item.py +2 -2
  188. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_webhook_secret_encryption.py +14 -8
  189. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_work_summary.py +45 -40
  190. multi_agent_platform-0.3.2/cli/commands/skill.py +0 -218
  191. multi_agent_platform-0.3.2/cli/commands/topic.py +0 -408
  192. multi_agent_platform-0.3.2/cli/skills/experiment-host/SKILL.md +0 -213
  193. multi_agent_platform-0.3.2/cli/skills/experiment-reviewer/SKILL.md +0 -121
  194. multi_agent_platform-0.3.2/cli/skills/map-project-collab/SKILL.md +0 -419
  195. multi_agent_platform-0.3.2/cli/skills/map-project-collab/agents/openai.yaml +0 -4
  196. multi_agent_platform-0.3.2/cli/skills/map-project-collab/references/waker-mode.md +0 -65
  197. multi_agent_platform-0.3.2/cli/skills/topic-host/SKILL.md +0 -303
  198. multi_agent_platform-0.3.2/cli/skills/topic-host/references/experiment-gate-rubric.md +0 -130
  199. multi_agent_platform-0.3.2/cli/skills/topic-participant/SKILL.md +0 -168
  200. multi_agent_platform-0.3.2/sdk/python/map_types/schemas.py +0 -1411
  201. multi_agent_platform-0.3.2/server/api/topics.py +0 -341
  202. multi_agent_platform-0.3.2/tests/test_agent_work.py +0 -76
  203. multi_agent_platform-0.3.2/tests/test_mentions.py +0 -882
  204. multi_agent_platform-0.3.2/tests/test_same_second_host_reply.py +0 -56
  205. multi_agent_platform-0.3.2/tests/test_topic_notifications.py +0 -101
  206. multi_agent_platform-0.3.2/tests/test_topic_progress.py +0 -97
  207. multi_agent_platform-0.3.2/tests/test_topics.py +0 -1163
  208. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/LICENSE +0 -0
  209. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/__init__.py +0 -0
  210. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/bridge_state.py +0 -0
  211. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/__init__.py +0 -0
  212. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/action.py +0 -0
  213. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/agent.py +0 -0
  214. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/audit.py +0 -0
  215. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/docs.py +0 -0
  216. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/feedback.py +0 -0
  217. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/host.py +0 -0
  218. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/notification.py +0 -0
  219. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/persona.py +0 -0
  220. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/runtime.py +0 -0
  221. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/commands/sync.py +0 -0
  222. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/git_checkpoint.py +0 -0
  223. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/host_worker_types.py +0 -0
  224. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/participant_worker.py +0 -0
  225. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/reviewer_worker.py +0 -0
  226. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/runtime/__init__.py +0 -0
  227. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/runtime_chat.py +0 -0
  228. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/session_wake_log.py +0 -0
  229. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/skills/__init__.py +0 -0
  230. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/skills/experiment-reviewer/references/review-format-guide.md +0 -0
  231. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/skills/map-project-collab/scripts/map-bootstrap.sh +0 -0
  232. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/table_render.py +0 -0
  233. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/wake_backend.py +0 -0
  234. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/cli/worker_cycle_log.py +0 -0
  235. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/multi_agent_platform.egg-info/dependency_links.txt +0 -0
  236. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/multi_agent_platform.egg-info/entry_points.txt +0 -0
  237. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/__init__.py +0 -0
  238. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/config.py +0 -0
  239. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/errors.py +0 -0
  240. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/exceptions.py +0 -0
  241. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/plan_evidence.py +0 -0
  242. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/project_config.py +0 -0
  243. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/result_template.py +0 -0
  244. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_client/testing.py +0 -0
  245. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/__init__.py +0 -0
  246. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/_utils.py +0 -0
  247. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/auth.py +0 -0
  248. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/config.py +0 -0
  249. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/context.py +0 -0
  250. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/main.py +0 -0
  251. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/server.py +0 -0
  252. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_mcp/session.py +0 -0
  253. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/sdk/python/map_sdk/evidence.py +0 -0
  254. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/__init__.py +0 -0
  255. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/__version__.py +0 -0
  256. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/__init__.py +0 -0
  257. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/action_items.py +0 -0
  258. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/agents.py +0 -0
  259. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/audit.py +0 -0
  260. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/background_tasks.py +0 -0
  261. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/common.py +0 -0
  262. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/deps.py +0 -0
  263. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/feedback.py +0 -0
  264. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/notifications.py +0 -0
  265. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/projects.py +0 -0
  266. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/status.py +0 -0
  267. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/api/webhooks.py +0 -0
  268. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/auth/__init__.py +0 -0
  269. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/auth/experiment_access.py +0 -0
  270. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/db/__init__.py +0 -0
  271. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/db/base.py +0 -0
  272. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/db/deadlock_retry.py +0 -0
  273. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/db/session.py +0 -0
  274. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/__init__.py +0 -0
  275. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/encrypted_types.py +0 -0
  276. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/schemas.py +0 -0
  277. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/domain/topic_ack_constants.py +0 -0
  278. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/scripts/__init__.py +0 -0
  279. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/scripts/migrate_notification_unique.py +0 -0
  280. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/scripts/purge_audit_pollution.py +0 -0
  281. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/__init__.py +0 -0
  282. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/_lookups.py +0 -0
  283. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/acceptance_service.py +0 -0
  284. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/action_item_migration_service.py +0 -0
  285. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/archive_lint_service.py +0 -0
  286. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/audit_service.py +0 -0
  287. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/comment_service.py +0 -0
  288. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/errors.py +0 -0
  289. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/evidence_service.py +0 -0
  290. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/inbound_event_service.py +0 -0
  291. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/notification_stream.py +0 -0
  292. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/permissions.py +0 -0
  293. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/secret_encryption.py +0 -0
  294. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/sse_event_schemas.py +0 -0
  295. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/status_service.py +0 -0
  296. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/template_service.py +0 -0
  297. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/text_utils.py +0 -0
  298. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/thread_activity.py +0 -0
  299. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/todo_persona_filter.py +0 -0
  300. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_comment_kind.py +0 -0
  301. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_helpers.py +0 -0
  302. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_progress_service.py +0 -0
  303. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_service.py +0 -0
  304. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/server/services/topic_work_item_service.py +0 -0
  305. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/setup.cfg +0 -0
  306. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_accept_result_verdict.py +0 -0
  307. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_agent_client.py +0 -0
  308. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_agents_list.py +0 -0
  309. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_arch_map_sdk_evidence.py +0 -0
  310. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_audit_admin_cli.py +0 -0
  311. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_audit_admin_filter.py +0 -0
  312. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_auth.py +0 -0
  313. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_authz_cross_persona_capability.py +0 -0
  314. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_authz_pr3_creator_gating_extended.py +0 -0
  315. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_bridge_state.py +0 -0
  316. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cleanup_audit_log_no_commit.py +0 -0
  317. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_error_envelope.py +0 -0
  318. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_evidence_contract.py +0 -0
  319. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_format_priority.py +0 -0
  320. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_n2_hard_cutover.py +0 -0
  321. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_schema_discovery.py +0 -0
  322. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_status.py +0 -0
  323. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_template_contract.py +0 -0
  324. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cli_work_deprecation.py +0 -0
  325. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_cross_persona_call_audit.py +0 -0
  326. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_deadlock_retry.py +0 -0
  327. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_typing_extensions_clean.py +0 -0
  328. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_eng_uv_lock.py +0 -0
  329. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_error_codes_cli.py +0 -0
  330. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_error_envelope_and_file_options.py +0 -0
  331. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_escalation_target_endpoint.py +0 -0
  332. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_evidence_service.py +0 -0
  333. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_capabilities.py +0 -0
  334. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_capabilities_whitelist.py +0 -0
  335. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_experiment_lock_fuzz.py +0 -0
  336. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_feedback.py +0 -0
  337. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_feedback_admin_cli.py +0 -0
  338. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_git_checkpoint.py +0 -0
  339. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_inbound_event_rejection.py +0 -0
  340. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_log_create_response.py +0 -0
  341. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_m2_flow.py +0 -0
  342. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_m3_flow.py +0 -0
  343. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_map_sdk_skeleton.py +0 -0
  344. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_mcp_http.py +0 -0
  345. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_mention_code_skip_unit.py +0 -0
  346. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_notification_stream.py +0 -0
  347. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_notification_upsert_pr2.py +0 -0
  348. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_notifications.py +0 -0
  349. multi_agent_platform-0.3.2/tests/test_cleanup_exp_b_paging_unified_limit.py → multi_agent_platform-0.4.0/tests/test_paging_unified_limit.py +0 -0
  350. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_participant_worker_claude_agent.py +0 -0
  351. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_perf_count_sql_fixture.py +0 -0
  352. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +0 -0
  353. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_perf_experiment_summary_bulk.py +0 -0
  354. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_perf_topic_comments_bulk.py +0 -0
  355. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_persona_compare_partition.py +0 -0
  356. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_phase_owner_orm_validation.py +0 -0
  357. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_phase_owner_resolver.py +0 -0
  358. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_plan_evidence_parser.py +0 -0
  359. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_plan_marker_service.py +0 -0
  360. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_plan_validate_cli.py +0 -0
  361. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_project_config.py +0 -0
  362. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_project_status.py +0 -0
  363. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_projects.py +0 -0
  364. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_rebutted_plan_continues_e2e.py +0 -0
  365. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_register_agent_body_model.py +0 -0
  366. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_reject_result_misuse.py +0 -0
  367. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_resolve_item_sdk_contract.py +0 -0
  368. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_resolve_item_status.py +0 -0
  369. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_result_template_parser.py +0 -0
  370. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_already_archived.py +0 -0
  371. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_archived_metadata.py +1 -1
  372. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_eligibility.py +0 -0
  373. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_item_mutation_audit.py +0 -0
  374. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_item_state_closed_migration.py +1 -1
  375. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_list_archived_filter.py +0 -0
  376. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_substitute_and_withdraw.py +0 -0
  377. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_review_verdict_alias.py +0 -0
  378. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_reviewer_worker_claude_agent.py +0 -0
  379. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_runtime_chat.py +0 -0
  380. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_sdk_exceptions.py +0 -0
  381. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_session_wake_log.py +0 -0
  382. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_similarity_api_contract.py +0 -0
  383. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_similarity_service.py +0 -0
  384. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_simple_waker_pr3_dedup.py +0 -0
  385. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_simple_waker_reviewer_filter.py +0 -0
  386. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_sse_acceptance.py +0 -0
  387. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_sse_isolation.py +0 -0
  388. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_sse_schema_overlap.py +0 -0
  389. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_state_machine.py +0 -0
  390. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_state_machine_recovery_hint.py +0 -0
  391. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_systemd_install.py +0 -0
  392. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_template_api_contract.py +0 -0
  393. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_template_service.py +0 -0
  394. {multi_agent_platform-0.3.2 → multi_agent_platform-0.4.0}/tests/test_webhooks_audit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-agent-platform
3
- Version: 0.3.2
3
+ Version: 0.4.0
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
@@ -42,7 +42,6 @@ Requires-Dist: pydantic-to-typescript<3.0,>=2.0.0; extra == "dev"
42
42
  Provides-Extra: mcp
43
43
  Requires-Dist: multi-agent-platform[server]; extra == "mcp"
44
44
  Requires-Dist: mcp<2.0,>=1.26.0; extra == "mcp"
45
- Provides-Extra: codex-runtime
46
45
  Provides-Extra: claude-runtime
47
46
  Requires-Dist: claude-agent-sdk<1.0,>=0.2; extra == "claude-runtime"
48
47
  Dynamic: license-file
@@ -106,9 +105,9 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
106
105
 
107
106
  ### PRD
108
107
 
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)
108
+ - [现行主线:v0.11(Agent 体验与生态互操作)](docs/prd/v0.11.md)
109
+ - [提案草案:v0.12(Agent 人机工程)](docs/prd/v0.12.md)
110
+ - 版本清单与历史归档以 [docs/prd/README.md](docs/prd/README.md) 为准
112
111
 
113
112
  ## 状态
114
113
 
@@ -122,9 +121,9 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
122
121
  - **Agent Runtime**:simple-waker 默认路径(轮询 + remind + action_item 升级)
123
122
  - **多 persona 协作**:`.map/` persona + Skill 指导 Agent 写回 MAP
124
123
 
125
- **当前主线**:v0.9 草案(waker Phase 2 通知降噪)。详见 [PRD v0.9](docs/prd/v0.9.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
124
+ **当前主线**:v0.11(Agent 体验与生态互操作,M50–M53 已完成),提案 v0.12(Agent 人机工程)评审中。详见 [PRD 入口](docs/prd/README.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
126
125
 
127
- 历史里程碑详见 PRD 归档:[v0.1–v0.6](docs/prd/archive/) · [占位 v0.7 / v0.8](docs/prd/archive/v0.7.md)。
126
+ 历史里程碑详见 [PRD 归档](docs/prd/README.md#历史归档按时间倒序)。
128
127
 
129
128
  **Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
130
129
 
@@ -164,17 +163,17 @@ map-server
164
163
  # 或: uvicorn server.main:app --reload
165
164
 
166
165
  # 注册首个 Admin(仅当系统中尚无 Agent 时可匿名调用)
167
- curl -X POST "http://localhost:8000/api/v1/agents?name=ops-admin&role=admin"
166
+ curl -X POST "http://localhost:8001/api/v1/agents?name=ops-admin&role=admin"
168
167
 
169
168
  # 后续 Agent 须由 Admin 注册
170
169
  curl -H "Authorization: Bearer <admin-token>" \
171
- -X POST "http://localhost:8000/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
170
+ -X POST "http://localhost:8001/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
172
171
 
173
172
  # 创建项目
174
173
  curl -H "Authorization: Bearer <token>" \
175
174
  -H "Content-Type: application/json" \
176
175
  -d '{"name":"demo","workspace_path":"/tmp/demo"}' \
177
- http://localhost:8000/api/v1/projects
176
+ http://localhost:8001/api/v1/projects
178
177
 
179
178
  # 运行测试
180
179
  pytest
@@ -280,7 +279,7 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
280
279
 
281
280
  ## Docker(API + Web)
282
281
 
283
- 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
282
+ 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`;本仓自带的 `docker-compose.override.yml` 在 `docker compose up` 时自动生效,把宿主端口改为 API `:8001`、MCP `:18081`。因此本仓库文档与 `.map/` bootstrap 示例统一使用 `http://localhost:8001`。
284
283
 
285
284
  ```bash
286
285
  docker compose up --build
@@ -57,9 +57,9 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
57
57
 
58
58
  ### PRD
59
59
 
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)
60
+ - [现行主线:v0.11(Agent 体验与生态互操作)](docs/prd/v0.11.md)
61
+ - [提案草案:v0.12(Agent 人机工程)](docs/prd/v0.12.md)
62
+ - 版本清单与历史归档以 [docs/prd/README.md](docs/prd/README.md) 为准
63
63
 
64
64
  ## 状态
65
65
 
@@ -73,9 +73,9 @@ map skill install # 将 5 个 Skill 文件安装到 .cursor/skills/
73
73
  - **Agent Runtime**:simple-waker 默认路径(轮询 + remind + action_item 升级)
74
74
  - **多 persona 协作**:`.map/` persona + Skill 指导 Agent 写回 MAP
75
75
 
76
- **当前主线**:v0.9 草案(waker Phase 2 通知降噪)。详见 [PRD v0.9](docs/prd/v0.9.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
76
+ **当前主线**:v0.11(Agent 体验与生态互操作,M50–M53 已完成),提案 v0.12(Agent 人机工程)评审中。详见 [PRD 入口](docs/prd/README.md) 与 [status-md-v10.md](docs/status-md-v10.md)。
77
77
 
78
- 历史里程碑详见 PRD 归档:[v0.1–v0.6](docs/prd/archive/) · [占位 v0.7 / v0.8](docs/prd/archive/v0.7.md)。
78
+ 历史里程碑详见 [PRD 归档](docs/prd/README.md#历史归档按时间倒序)。
79
79
 
80
80
  **Agent 身份(本仓库)**:统一使用 **`.map/` persona + `map` CLI**(见 [AGENTS.md](AGENTS.md));Cursor MCP 接入计划停用。
81
81
 
@@ -115,17 +115,17 @@ map-server
115
115
  # 或: uvicorn server.main:app --reload
116
116
 
117
117
  # 注册首个 Admin(仅当系统中尚无 Agent 时可匿名调用)
118
- curl -X POST "http://localhost:8000/api/v1/agents?name=ops-admin&role=admin"
118
+ curl -X POST "http://localhost:8001/api/v1/agents?name=ops-admin&role=admin"
119
119
 
120
120
  # 后续 Agent 须由 Admin 注册
121
121
  curl -H "Authorization: Bearer <admin-token>" \
122
- -X POST "http://localhost:8000/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
122
+ -X POST "http://localhost:8001/api/v1/agents?name=agent-alpha&role=agent&project_key=<project-key>"
123
123
 
124
124
  # 创建项目
125
125
  curl -H "Authorization: Bearer <token>" \
126
126
  -H "Content-Type: application/json" \
127
127
  -d '{"name":"demo","workspace_path":"/tmp/demo"}' \
128
- http://localhost:8000/api/v1/projects
128
+ http://localhost:8001/api/v1/projects
129
129
 
130
130
  # 运行测试
131
131
  pytest
@@ -231,7 +231,7 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
231
231
 
232
232
  ## Docker(API + Web)
233
233
 
234
- 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
234
+ 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`;本仓自带的 `docker-compose.override.yml` 在 `docker compose up` 时自动生效,把宿主端口改为 API `:8001`、MCP `:18081`。因此本仓库文档与 `.map/` bootstrap 示例统一使用 `http://localhost:8001`。
235
235
 
236
236
  ```bash
237
237
  docker compose up --build
@@ -13,7 +13,7 @@
13
13
  from __future__ import annotations
14
14
 
15
15
  from dataclasses import dataclass
16
- from datetime import UTC, datetime, timedelta
16
+ from datetime import datetime, timedelta, timezone
17
17
  from enum import Enum
18
18
  from typing import Any
19
19
 
@@ -48,12 +48,12 @@ def _parse_iso_datetime(value: Any) -> datetime | None:
48
48
  if value is None or value == "":
49
49
  return None
50
50
  if isinstance(value, datetime):
51
- return value if value.tzinfo else value.replace(tzinfo=UTC)
51
+ return value if value.tzinfo else value.replace(tzinfo=timezone.utc)
52
52
  try:
53
53
  parsed = datetime.fromisoformat(str(value).replace("Z", "+00:00"))
54
54
  except ValueError:
55
55
  return None
56
- return parsed if parsed.tzinfo else parsed.replace(tzinfo=UTC)
56
+ return parsed if parsed.tzinfo else parsed.replace(tzinfo=timezone.utc)
57
57
 
58
58
 
59
59
  def should_wake_action_item(
@@ -77,7 +77,7 @@ def should_wake_action_item(
77
77
  written the diagnostic audit row we stop bothering the assignee.
78
78
  - First wake fires 24h after ``first_open_at``; second at 72h; further
79
79
  wakes every 7d; the (N+1)th check after the 4th wake writes stale.
80
- - ``now`` defaults to ``datetime.now(UTC)`` — callers that need a
80
+ - ``now`` defaults to ``datetime.now(timezone.utc)`` — callers that need a
81
81
  deterministic clock (tests, dogfood) inject their own.
82
82
  """
83
83
  if not isinstance(item, dict):
@@ -91,7 +91,7 @@ def should_wake_action_item(
91
91
  if _parse_iso_datetime(item.get("stale_at")) is not None:
92
92
  return ActionItemWakeDecision.SKIP
93
93
 
94
- current = now or datetime.now(UTC)
94
+ current = now or datetime.now(timezone.utc)
95
95
  first_open_at = _parse_iso_datetime(item.get("first_open_at"))
96
96
  if first_open_at is None:
97
97
  # Pre-I1 backfill may have missed this row (closed before I1, etc).
@@ -13,7 +13,7 @@ import logging
13
13
  import os
14
14
  import re
15
15
  from collections.abc import Callable
16
- from datetime import UTC, datetime
16
+ from datetime import datetime, timezone
17
17
  from pathlib import Path
18
18
  from typing import Any, Literal, Protocol, TypedDict
19
19
 
@@ -150,7 +150,7 @@ class PersonaAgentClient:
150
150
  # the real session_id only arrives with the ResultMessage. A long
151
151
  # running turn is then observable live — a stuck agent shows up as the
152
152
  # last event ts going stale.
153
- pre_sid = resume_session_id or f"new-{datetime.now(UTC).strftime('%Y%m%dT%H%M%S%f')}"
153
+ pre_sid = resume_session_id or f"new-{datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%S%f')}"
154
154
  log_path = resolve_session_log_path(self._resolve_session_log_dir(), pre_sid, self.persona)
155
155
  self._log_event(
156
156
  log_path,
@@ -261,7 +261,7 @@ class PersonaAgentClient:
261
261
  else:
262
262
  status = "ok"
263
263
 
264
- self.state["last_wakeup_at"] = datetime.now(UTC).isoformat()
264
+ self.state["last_wakeup_at"] = datetime.now(timezone.utc).isoformat()
265
265
  self.state["last_wakeup_status"] = status
266
266
  self._save_state_fn()
267
267
 
@@ -337,7 +337,7 @@ class PersonaAgentClient:
337
337
  return str(result.session_id)
338
338
  if resume_session_id:
339
339
  return str(resume_session_id)
340
- return f"unknown-{datetime.now(UTC).strftime('%Y%m%dT%H%M%S%fZ')}"
340
+ return f"unknown-{datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%S%fZ')}"
341
341
 
342
342
  def _log_event(
343
343
  self,
@@ -0,0 +1,104 @@
1
+ """``map auth ...`` sub-app — self-service credential recovery (M52C).
2
+
3
+ ``map auth reissue`` recovers a lost agent token using the project_key
4
+ (same self-service trust boundary as ``map bootstrap``): the server
5
+ rotates the token, revoking the old one, and the CLI writes the new
6
+ token back into ``.map/agents.local.yaml``.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from pathlib import Path
11
+
12
+ import typer
13
+ from map_client.bootstrap import reissue_map_token
14
+ from map_client.exceptions import MAPHTTPError
15
+
16
+ auth_app = typer.Typer(help="Manage MAP credentials (token recovery)")
17
+
18
+
19
+ @auth_app.command("reissue")
20
+ def auth_reissue(
21
+ name: str = typer.Option(
22
+ ...,
23
+ "--name",
24
+ "-n",
25
+ help="Agent name to reissue (e.g. multi-agent-platform-host; "
26
+ "see .map/agents.yaml).",
27
+ ),
28
+ key: str | None = typer.Option(
29
+ None,
30
+ "--key",
31
+ "-k",
32
+ help="Project key (default: project_key from .map/config.yaml).",
33
+ ),
34
+ api_url: str | None = typer.Option(
35
+ None,
36
+ "--api-url",
37
+ help="MAP API base URL (default: api_url from .map/config.yaml, "
38
+ "then MAP_API_URL, then http://localhost:8000).",
39
+ ),
40
+ project_root: Path | None = typer.Option(
41
+ None,
42
+ "--project-root",
43
+ help="Directory containing .map/ (default: current directory).",
44
+ ),
45
+ ) -> None:
46
+ """Reissue an agent's API token and write it back to .map/agents.local.yaml.
47
+
48
+ Recovery path for a lost ``.map/agents.local.yaml``. The previous
49
+ token is revoked immediately (anywhere it was used will start
50
+ returning 401 until re-reissued). Trust model mirrors
51
+ ``map bootstrap``: the project_key is the proof of ownership.
52
+
53
+ \b
54
+ Examples:
55
+ map auth reissue --key my-project --name my-project-host
56
+ map auth reissue --name my-project-host # key from .map/config.yaml
57
+ """
58
+ from cli.main import _cli_options
59
+
60
+ fmt = _cli_options.get("format", "yaml")
61
+ root = project_root or _cli_options.get("project_root")
62
+
63
+ try:
64
+ result = reissue_map_token(
65
+ agent_name=name,
66
+ project_key=key,
67
+ project_root=Path(root) if root else None,
68
+ api_url=api_url,
69
+ )
70
+ except ValueError as exc:
71
+ typer.echo(f"Error: {exc}", err=True)
72
+ raise typer.Exit(1) from exc
73
+ except MAPHTTPError as exc:
74
+ typer.echo(f"Error {exc.status_code}: {exc.detail}", err=True)
75
+ raise typer.Exit(1) from exc
76
+
77
+ if fmt == "json":
78
+ import json
79
+
80
+ typer.echo(
81
+ json.dumps(
82
+ {
83
+ "ok": True,
84
+ "data": {
85
+ "agent_id": result.agent_id,
86
+ "agent_name": result.agent_name,
87
+ "persona": result.persona_key,
88
+ "api_url": result.api_url,
89
+ "wrote_back": str(result.local_path),
90
+ "previous_token_revoked": True,
91
+ },
92
+ },
93
+ ensure_ascii=False,
94
+ indent=2,
95
+ )
96
+ )
97
+ return
98
+
99
+ typer.echo(f"Reissued token for agent '{result.agent_name}' ({result.agent_id})")
100
+ typer.echo(f"Previous token revoked. Wrote back: {result.local_path}")
101
+ if result.persona_key:
102
+ typer.echo(f"Try: map --persona {result.persona_key} persona whoami")
103
+ else:
104
+ typer.echo("Try: map persona whoami")