multi-agent-platform 0.3.2__tar.gz → 0.6.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 (402) hide show
  1. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/PKG-INFO +42 -25
  2. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/README.md +28 -10
  3. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/action_item_escalation.py +5 -5
  4. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/agent_client.py +4 -4
  5. multi_agent_platform-0.6.0/cli/commands/auth.py +104 -0
  6. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/experiment.py +253 -74
  7. multi_agent_platform-0.6.0/cli/commands/fs.py +658 -0
  8. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/project.py +5 -8
  9. multi_agent_platform-0.6.0/cli/commands/skill.py +645 -0
  10. multi_agent_platform-0.6.0/cli/commands/topic.py +1212 -0
  11. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/e2e_collab.py +34 -19
  12. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/local_cache.py +0 -1
  13. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/main.py +220 -285
  14. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/map_command_client.py +23 -3
  15. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/orchestrator.py +2 -4
  16. multi_agent_platform-0.6.0/cli/persona_compare.py +297 -0
  17. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/project_export.py +5 -8
  18. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime/run_lock.py +7 -7
  19. multi_agent_platform-0.6.0/cli/shortid.py +111 -0
  20. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/simple_waker.py +6 -6
  21. multi_agent_platform-0.6.0/cli/skills/experiment-host/SKILL.md +106 -0
  22. multi_agent_platform-0.6.0/cli/skills/experiment-host/map-plugin.yaml +11 -0
  23. multi_agent_platform-0.6.0/cli/skills/experiment-host/references/execution-cookbook.md +92 -0
  24. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/experiment-host/references/lifecycle-transitions.md +1 -1
  25. multi_agent_platform-0.6.0/cli/skills/experiment-reviewer/SKILL.md +69 -0
  26. multi_agent_platform-0.6.0/cli/skills/experiment-reviewer/map-plugin.yaml +11 -0
  27. multi_agent_platform-0.6.0/cli/skills/map-project-collab/SKILL.md +133 -0
  28. multi_agent_platform-0.6.0/cli/skills/map-project-collab/map-plugin.yaml +11 -0
  29. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/map-project-collab/references/bootstrap-troubleshooting.md +7 -5
  30. multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/commands.md +153 -0
  31. multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/file-reference.md +51 -0
  32. multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/platform-feedback.md +37 -0
  33. multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/wake.md +51 -0
  34. multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/waker-mode.md +30 -0
  35. multi_agent_platform-0.6.0/cli/skills/topic-host/SKILL.md +117 -0
  36. multi_agent_platform-0.6.0/cli/skills/topic-host/map-plugin.yaml +11 -0
  37. multi_agent_platform-0.6.0/cli/skills/topic-host/references/experiment-gate-rubric.md +141 -0
  38. multi_agent_platform-0.6.0/cli/skills/topic-host/references/host-checklist.md +113 -0
  39. multi_agent_platform-0.6.0/cli/skills/topic-participant/SKILL.md +95 -0
  40. multi_agent_platform-0.6.0/cli/skills/topic-participant/map-plugin.yaml +11 -0
  41. multi_agent_platform-0.6.0/cli/skills/topic-participant/references/participant-checklist.md +76 -0
  42. multi_agent_platform-0.6.0/cli/subcommand_format.py +195 -0
  43. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/PKG-INFO +42 -25
  44. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/SOURCES.txt +72 -11
  45. multi_agent_platform-0.6.0/multi_agent_platform.egg-info/requires.txt +31 -0
  46. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/top_level.txt +1 -0
  47. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/pyproject.toml +19 -22
  48. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/bootstrap.py +163 -2
  49. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/client.py +125 -1
  50. multi_agent_platform-0.6.0/sdk/python/map_fs/__init__.py +43 -0
  51. multi_agent_platform-0.6.0/sdk/python/map_fs/parser.py +588 -0
  52. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_sdk/__init__.py +1 -1
  53. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_types/__init__.py +35 -2
  54. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_types/enums.py +15 -0
  55. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/__init__.py +357 -0
  56. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/a2a.py +57 -0
  57. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/agent.py +57 -0
  58. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/agent_work.py +95 -0
  59. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/audit.py +81 -0
  60. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/base.py +7 -0
  61. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/comment.py +36 -0
  62. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/experiment.py +426 -0
  63. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/feedback.py +47 -0
  64. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/fs.py +182 -0
  65. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/inbound_event.py +57 -0
  66. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/notification.py +39 -0
  67. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/plan.py +38 -0
  68. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/project.py +138 -0
  69. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/review.py +64 -0
  70. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/todo.py +180 -0
  71. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/topic.py +233 -0
  72. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/topic_progress.py +63 -0
  73. multi_agent_platform-0.6.0/sdk/python/map_types/schemas/webhook.py +48 -0
  74. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/__version__.py +1 -1
  75. multi_agent_platform-0.6.0/server/api/a2a.py +194 -0
  76. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/bootstrap.py +40 -0
  77. multi_agent_platform-0.6.0/server/api/docs.py +80 -0
  78. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/experiments.py +11 -2
  79. multi_agent_platform-0.6.0/server/api/fs.py +486 -0
  80. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/router.py +6 -0
  81. multi_agent_platform-0.6.0/server/api/topics.py +282 -0
  82. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/config.py +11 -0
  83. multi_agent_platform-0.6.0/server/domain/a2a_mapping.py +79 -0
  84. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/models.py +60 -3
  85. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/state_machine.py +40 -21
  86. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/main.py +72 -0
  87. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/action_item_service.py +3 -3
  88. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/agent_work_service.py +9 -0
  89. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/auth.py +47 -0
  90. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/bootstrap_service.py +4 -2
  91. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/escalation_resolver.py +2 -2
  92. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/experiment_capabilities_service.py +24 -2
  93. multi_agent_platform-0.6.0/server/services/fs_source_service.py +925 -0
  94. multi_agent_platform-0.6.0/server/services/fs_write_token.py +127 -0
  95. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/lock_service.py +3 -3
  96. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/log_service.py +62 -13
  97. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/mention_service.py +2 -2
  98. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/notification_service.py +8 -8
  99. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/persona_activity_service.py +3 -3
  100. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/phase_owner_resolver.py +24 -3
  101. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/phase_service.py +89 -11
  102. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/plan_marker_service.py +41 -14
  103. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/plan_service.py +2 -2
  104. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/platform_feedback_service.py +2 -2
  105. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/project_service.py +101 -16
  106. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/project_status_service.py +2 -2
  107. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/review_service.py +2 -2
  108. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/similarity_service.py +6 -0
  109. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/todo_service.py +4 -4
  110. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_ack_service.py +20 -9
  111. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_action_item_ops.py +3 -3
  112. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_comment_service.py +17 -5
  113. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_lifecycle_service.py +45 -47
  114. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_resolve_service.py +3 -3
  115. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/webhook_service.py +3 -3
  116. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_18a64691_linkage.py +10 -5
  117. multi_agent_platform-0.6.0/tests/test_a2a.py +200 -0
  118. multi_agent_platform-0.3.2/tests/test_a2_action_item_cascade.py → multi_agent_platform-0.6.0/tests/test_action_item_cascade.py +146 -131
  119. multi_agent_platform-0.3.2/tests/test_b_action_item_stale.py → multi_agent_platform-0.6.0/tests/test_action_item_stale.py +3 -3
  120. multi_agent_platform-0.3.2/tests/test_b_acceptance.py → multi_agent_platform-0.6.0/tests/test_action_item_timeline_acceptance.py +13 -13
  121. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_endpoints.py → multi_agent_platform-0.6.0/tests/test_action_item_wake_endpoints.py +56 -48
  122. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_stale.py → multi_agent_platform-0.6.0/tests/test_action_item_wake_stale.py +16 -16
  123. multi_agent_platform-0.3.2/tests/test_b_action_item_wake_stale_notifications.py → multi_agent_platform-0.6.0/tests/test_action_item_wake_stale_notifications.py +43 -42
  124. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_action_items.py +116 -212
  125. multi_agent_platform-0.6.0/tests/test_agent_work.py +79 -0
  126. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_archive_lint_service.py +2 -2
  127. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_auth_experiment_access.py +2 -2
  128. multi_agent_platform-0.6.0/tests/test_auth_reissue.py +149 -0
  129. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_bootstrap.py +103 -0
  130. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_clear_action_template.py +6 -5
  131. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli.py +92 -70
  132. multi_agent_platform-0.6.0/tests/test_cli_json_schema.py +276 -0
  133. multi_agent_platform-0.6.0/tests/test_cli_shortid.py +297 -0
  134. multi_agent_platform-0.6.0/tests/test_cli_subcommand_format.py +204 -0
  135. multi_agent_platform-0.6.0/tests/test_cli_version_flag.py +62 -0
  136. multi_agent_platform-0.6.0/tests/test_direct_mode.py +174 -0
  137. multi_agent_platform-0.6.0/tests/test_docs_consistency.py +210 -0
  138. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_docs_inventory.py +36 -12
  139. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_fast_gate_whitelist_complete.py +1 -1
  140. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_agent_work_service.py +3 -2
  141. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_agents.py +3 -2
  142. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_experiment_capabilities_service.py +3 -2
  143. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_experiments_projects.py +3 -2
  144. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_mention_service.py +3 -2
  145. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_notification_service.py +3 -2
  146. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_phase_service.py +3 -2
  147. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_project_service.py +3 -2
  148. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_todo_service.py +3 -2
  149. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_comment_service.py +3 -2
  150. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_service.py +3 -2
  151. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_work_item_service.py +3 -2
  152. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topics.py +5 -5
  153. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_version_single_source.py +20 -1
  154. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_escalation_resolver.py +2 -2
  155. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_executor.py +0 -1
  156. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_notifications.py +7 -7
  157. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_unit.py +9 -9
  158. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiments.py +23 -0
  159. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_field_rename_alias.py +2 -2
  160. multi_agent_platform-0.6.0/tests/test_fs_remote_mode.py +457 -0
  161. multi_agent_platform-0.6.0/tests/test_fs_scan_plane_perf_baseline.py +97 -0
  162. multi_agent_platform-0.6.0/tests/test_fs_source.py +569 -0
  163. multi_agent_platform-0.6.0/tests/test_gitignore_map_dir.py +28 -0
  164. multi_agent_platform-0.6.0/tests/test_lint_gate_coverage.py +48 -0
  165. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_local_cache.py +0 -4
  166. multi_agent_platform-0.6.0/tests/test_m55_error_envelope.py +338 -0
  167. multi_agent_platform-0.6.0/tests/test_m57_log_slim_form.py +376 -0
  168. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mcp.py +29 -18
  169. multi_agent_platform-0.6.0/tests/test_mentions.py +433 -0
  170. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_bulk_filter.py +6 -6
  171. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_service_v09.py +3 -3
  172. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_orchestrator.py +0 -3
  173. multi_agent_platform-0.3.2/tests/test_cleanup_exp_b_paging_seven_endpoints.py → multi_agent_platform-0.6.0/tests/test_paging_seven_endpoints.py +17 -13
  174. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_work_hotpath_bulk.py +2 -2
  175. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_persona_activity.py +8 -8
  176. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_revise_auto_archive.py +5 -1
  177. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_export.py +1 -5
  178. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_reject_result_misuse.py +3 -4
  179. multi_agent_platform-0.6.0/tests/test_required_option_guard.py +104 -0
  180. multi_agent_platform-0.6.0/tests/test_same_second_host_reply.py +61 -0
  181. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_same_second_trio.py +25 -39
  182. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sdk.py +88 -63
  183. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_server_lock_service.py +6 -6
  184. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker.py +3 -3
  185. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_skill_install.py +1 -6
  186. multi_agent_platform-0.6.0/tests/test_skill_versioning.py +398 -0
  187. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_todos.py +164 -203
  188. multi_agent_platform-0.6.0/tests/test_topic_migrate.py +251 -0
  189. multi_agent_platform-0.6.0/tests/test_topic_notifications.py +57 -0
  190. multi_agent_platform-0.6.0/tests/test_topic_progress.py +88 -0
  191. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_topic_read_cursor.py +42 -38
  192. multi_agent_platform-0.6.0/tests/test_topic_routing.py +647 -0
  193. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_topic_work_items.py +128 -151
  194. multi_agent_platform-0.6.0/tests/test_topics.py +537 -0
  195. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_waker_phase1_acceptance.py +35 -27
  196. multi_agent_platform-0.3.2/tests/test_b_waker_should_wake_action_item.py → multi_agent_platform-0.6.0/tests/test_waker_should_wake_action_item.py +2 -2
  197. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_webhook_secret_encryption.py +14 -8
  198. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_work_summary.py +45 -40
  199. multi_agent_platform-0.3.2/cli/commands/skill.py +0 -218
  200. multi_agent_platform-0.3.2/cli/commands/topic.py +0 -408
  201. multi_agent_platform-0.3.2/cli/skills/experiment-host/SKILL.md +0 -213
  202. multi_agent_platform-0.3.2/cli/skills/experiment-reviewer/SKILL.md +0 -121
  203. multi_agent_platform-0.3.2/cli/skills/map-project-collab/SKILL.md +0 -419
  204. multi_agent_platform-0.3.2/cli/skills/map-project-collab/agents/openai.yaml +0 -4
  205. multi_agent_platform-0.3.2/cli/skills/map-project-collab/references/waker-mode.md +0 -65
  206. multi_agent_platform-0.3.2/cli/skills/topic-host/SKILL.md +0 -303
  207. multi_agent_platform-0.3.2/cli/skills/topic-host/references/experiment-gate-rubric.md +0 -130
  208. multi_agent_platform-0.3.2/cli/skills/topic-participant/SKILL.md +0 -168
  209. multi_agent_platform-0.3.2/multi_agent_platform.egg-info/requires.txt +0 -33
  210. multi_agent_platform-0.3.2/sdk/python/map_types/schemas.py +0 -1411
  211. multi_agent_platform-0.3.2/server/api/topics.py +0 -341
  212. multi_agent_platform-0.3.2/tests/test_agent_work.py +0 -76
  213. multi_agent_platform-0.3.2/tests/test_mentions.py +0 -882
  214. multi_agent_platform-0.3.2/tests/test_same_second_host_reply.py +0 -56
  215. multi_agent_platform-0.3.2/tests/test_topic_notifications.py +0 -101
  216. multi_agent_platform-0.3.2/tests/test_topic_progress.py +0 -97
  217. multi_agent_platform-0.3.2/tests/test_topics.py +0 -1163
  218. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/LICENSE +0 -0
  219. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/__init__.py +0 -0
  220. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/bridge_state.py +0 -0
  221. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/__init__.py +0 -0
  222. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/action.py +0 -0
  223. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/agent.py +0 -0
  224. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/audit.py +0 -0
  225. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/docs.py +0 -0
  226. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/feedback.py +0 -0
  227. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/host.py +0 -0
  228. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/notification.py +0 -0
  229. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/persona.py +0 -0
  230. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/runtime.py +0 -0
  231. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/sync.py +0 -0
  232. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/git_checkpoint.py +0 -0
  233. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/host_worker_types.py +0 -0
  234. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/participant_worker.py +0 -0
  235. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/reviewer_worker.py +0 -0
  236. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime/__init__.py +0 -0
  237. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime_chat.py +0 -0
  238. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/session_wake_log.py +0 -0
  239. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/__init__.py +0 -0
  240. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/experiment-reviewer/references/review-format-guide.md +0 -0
  241. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/map-project-collab/scripts/map-bootstrap.sh +0 -0
  242. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/table_render.py +0 -0
  243. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/wake_backend.py +0 -0
  244. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/worker_cycle_log.py +0 -0
  245. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/dependency_links.txt +0 -0
  246. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/entry_points.txt +0 -0
  247. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/__init__.py +0 -0
  248. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/config.py +0 -0
  249. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/errors.py +0 -0
  250. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/exceptions.py +0 -0
  251. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/plan_evidence.py +0 -0
  252. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/project_config.py +0 -0
  253. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/result_template.py +0 -0
  254. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/testing.py +0 -0
  255. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/__init__.py +0 -0
  256. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/_utils.py +0 -0
  257. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/auth.py +0 -0
  258. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/config.py +0 -0
  259. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/context.py +0 -0
  260. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/main.py +0 -0
  261. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/server.py +0 -0
  262. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/session.py +0 -0
  263. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_sdk/evidence.py +0 -0
  264. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/__init__.py +0 -0
  265. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/__init__.py +0 -0
  266. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/action_items.py +0 -0
  267. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/agents.py +0 -0
  268. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/audit.py +0 -0
  269. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/background_tasks.py +0 -0
  270. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/common.py +0 -0
  271. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/deps.py +0 -0
  272. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/feedback.py +0 -0
  273. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/notifications.py +0 -0
  274. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/projects.py +0 -0
  275. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/status.py +0 -0
  276. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/webhooks.py +0 -0
  277. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/auth/__init__.py +0 -0
  278. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/auth/experiment_access.py +0 -0
  279. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/__init__.py +0 -0
  280. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/base.py +0 -0
  281. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/deadlock_retry.py +0 -0
  282. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/session.py +0 -0
  283. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/__init__.py +0 -0
  284. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/encrypted_types.py +0 -0
  285. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/schemas.py +0 -0
  286. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/topic_ack_constants.py +0 -0
  287. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/__init__.py +0 -0
  288. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/migrate_notification_unique.py +0 -0
  289. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/purge_audit_pollution.py +0 -0
  290. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/__init__.py +0 -0
  291. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/_lookups.py +0 -0
  292. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/acceptance_service.py +0 -0
  293. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/action_item_migration_service.py +0 -0
  294. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/archive_lint_service.py +0 -0
  295. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/audit_service.py +0 -0
  296. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/comment_service.py +0 -0
  297. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/errors.py +0 -0
  298. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/evidence_service.py +0 -0
  299. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/inbound_event_service.py +0 -0
  300. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/notification_stream.py +0 -0
  301. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/permissions.py +0 -0
  302. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/secret_encryption.py +0 -0
  303. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/sse_event_schemas.py +0 -0
  304. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/status_service.py +0 -0
  305. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/template_service.py +0 -0
  306. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/text_utils.py +0 -0
  307. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/thread_activity.py +0 -0
  308. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/todo_persona_filter.py +0 -0
  309. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_comment_kind.py +0 -0
  310. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_helpers.py +0 -0
  311. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_progress_service.py +0 -0
  312. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_service.py +0 -0
  313. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_work_item_service.py +0 -0
  314. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/setup.cfg +0 -0
  315. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_accept_result_verdict.py +0 -0
  316. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_agent_client.py +0 -0
  317. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_agents_list.py +0 -0
  318. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_arch_map_sdk_evidence.py +0 -0
  319. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_audit_admin_cli.py +0 -0
  320. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_audit_admin_filter.py +0 -0
  321. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_auth.py +0 -0
  322. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_authz_cross_persona_capability.py +0 -0
  323. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_authz_pr3_creator_gating_extended.py +0 -0
  324. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_bridge_state.py +0 -0
  325. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cleanup_audit_log_no_commit.py +0 -0
  326. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_error_envelope.py +0 -0
  327. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_evidence_contract.py +0 -0
  328. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_format_priority.py +0 -0
  329. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_n2_hard_cutover.py +0 -0
  330. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_schema_discovery.py +0 -0
  331. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_status.py +0 -0
  332. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_template_contract.py +0 -0
  333. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_work_deprecation.py +0 -0
  334. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cross_persona_call_audit.py +0 -0
  335. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_deadlock_retry.py +0 -0
  336. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_typing_extensions_clean.py +0 -0
  337. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_uv_lock.py +0 -0
  338. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_error_codes_cli.py +0 -0
  339. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_error_envelope_and_file_options.py +0 -0
  340. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_escalation_target_endpoint.py +0 -0
  341. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_evidence_service.py +0 -0
  342. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_capabilities.py +0 -0
  343. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_capabilities_whitelist.py +0 -0
  344. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_fuzz.py +0 -0
  345. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_feedback.py +0 -0
  346. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_feedback_admin_cli.py +0 -0
  347. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_git_checkpoint.py +0 -0
  348. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_inbound_event_rejection.py +0 -0
  349. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_log_create_response.py +0 -0
  350. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_m2_flow.py +0 -0
  351. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_m3_flow.py +0 -0
  352. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_map_sdk_skeleton.py +0 -0
  353. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mcp_http.py +0 -0
  354. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mention_code_skip_unit.py +0 -0
  355. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_stream.py +0 -0
  356. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_upsert_pr2.py +0 -0
  357. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notifications.py +0 -0
  358. multi_agent_platform-0.3.2/tests/test_cleanup_exp_b_paging_unified_limit.py → multi_agent_platform-0.6.0/tests/test_paging_unified_limit.py +0 -0
  359. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_participant_worker_claude_agent.py +0 -0
  360. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_count_sql_fixture.py +0 -0
  361. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +0 -0
  362. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_experiment_summary_bulk.py +0 -0
  363. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_topic_comments_bulk.py +0 -0
  364. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_persona_compare_partition.py +0 -0
  365. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_phase_owner_orm_validation.py +0 -0
  366. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_phase_owner_resolver.py +0 -0
  367. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_evidence_parser.py +0 -0
  368. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_marker_service.py +0 -0
  369. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_validate_cli.py +0 -0
  370. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_config.py +0 -0
  371. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_status.py +0 -0
  372. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_projects.py +0 -0
  373. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_rebutted_plan_continues_e2e.py +0 -0
  374. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_register_agent_body_model.py +0 -0
  375. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_resolve_item_sdk_contract.py +0 -0
  376. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_resolve_item_status.py +0 -0
  377. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_result_template_parser.py +0 -0
  378. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_already_archived.py +0 -0
  379. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_archived_metadata.py +1 -1
  380. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_eligibility.py +0 -0
  381. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_item_mutation_audit.py +0 -0
  382. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_item_state_closed_migration.py +1 -1
  383. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_list_archived_filter.py +0 -0
  384. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_substitute_and_withdraw.py +0 -0
  385. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_verdict_alias.py +0 -0
  386. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_reviewer_worker_claude_agent.py +0 -0
  387. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_runtime_chat.py +0 -0
  388. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sdk_exceptions.py +0 -0
  389. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_session_wake_log.py +0 -0
  390. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_similarity_api_contract.py +0 -0
  391. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_similarity_service.py +0 -0
  392. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker_pr3_dedup.py +0 -0
  393. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker_reviewer_filter.py +0 -0
  394. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_acceptance.py +0 -0
  395. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_isolation.py +0 -0
  396. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_schema_overlap.py +0 -0
  397. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_state_machine.py +0 -0
  398. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_state_machine_recovery_hint.py +0 -0
  399. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_systemd_install.py +0 -0
  400. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_template_api_contract.py +0 -0
  401. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_template_service.py +0 -0
  402. {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.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.6.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
@@ -17,32 +17,31 @@ Classifier: Operating System :: OS Independent
17
17
  Requires-Python: >=3.10
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: LICENSE
20
- Requires-Dist: typer<0.17,>=0.15.0
21
- Requires-Dist: httpx<0.29,>=0.28.0
20
+ Requires-Dist: typer<0.28,>=0.15.0
21
+ Requires-Dist: httpx<1,>=0.28.0
22
22
  Requires-Dist: pyyaml<7.0,>=6.0
23
- Requires-Dist: pydantic<2.12,>=2.10.0
23
+ Requires-Dist: pydantic<3,>=2.10.0
24
24
  Provides-Extra: server
25
- Requires-Dist: fastapi<0.116,>=0.115.0; extra == "server"
26
- Requires-Dist: uvicorn[standard]<0.41,>=0.32.0; extra == "server"
27
- Requires-Dist: sqlalchemy<2.1,>=2.0.36; extra == "server"
28
- Requires-Dist: alembic<2.0,>=1.14.0; extra == "server"
29
- Requires-Dist: pydantic-settings<2.9,>=2.6.0; extra == "server"
25
+ Requires-Dist: fastapi<1,>=0.115.0; extra == "server"
26
+ Requires-Dist: uvicorn[standard]<1,>=0.32.0; extra == "server"
27
+ Requires-Dist: sqlalchemy<3,>=2.0.36; extra == "server"
28
+ Requires-Dist: alembic<3,>=1.14.0; extra == "server"
29
+ Requires-Dist: pydantic-settings<3,>=2.6.0; extra == "server"
30
30
  Requires-Dist: bcrypt<6.0,>=4.2.0; extra == "server"
31
- Requires-Dist: python-multipart<0.1,>=0.0.17; extra == "server"
31
+ Requires-Dist: python-multipart<1,>=0.0.17; extra == "server"
32
32
  Requires-Dist: cryptography<50.0,>=44.0.0; extra == "server"
33
33
  Provides-Extra: dev
34
34
  Requires-Dist: multi-agent-platform[server]; extra == "dev"
35
- Requires-Dist: pytest<9.0,>=8.3.0; extra == "dev"
36
- Requires-Dist: pytest-asyncio<1.0,>=0.24.0; extra == "dev"
37
- Requires-Dist: pytest-cov<7.0,>=5.0.0; extra == "dev"
38
- Requires-Dist: httpx<0.29,>=0.28.0; extra == "dev"
35
+ Requires-Dist: pytest<10,>=8.3.0; extra == "dev"
36
+ Requires-Dist: pytest-asyncio<2.0,>=0.24.0; extra == "dev"
37
+ Requires-Dist: pytest-cov<8.0,>=5.0.0; extra == "dev"
38
+ Requires-Dist: httpx<1,>=0.28.0; extra == "dev"
39
39
  Requires-Dist: mcp<2.0,>=1.26.0; extra == "dev"
40
40
  Requires-Dist: ruff<1.0,>=0.8.0; extra == "dev"
41
41
  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,23 +163,24 @@ 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
181
180
 
182
181
  # CLI 用法(需设置 MAP_TOKEN 或 ~/.map/config.yaml)
183
182
  export MAP_TOKEN=<your-token>
183
+ map --version
184
184
  map project list
185
185
  map status
186
186
  map experiment start --id <exp-id>
@@ -262,7 +262,7 @@ map --persona host status # 查看 open_topics
262
262
  ./scripts/start-simple-waker.sh --persona host --once --dry-run
263
263
  ```
264
264
 
265
- 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳,勿提交 Git)。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
265
+ 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳)。`.map/` 整目录 gitignore,勿提交。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
266
266
 
267
267
  `--drain-topics` 只负责启动/监控:脚本每轮检查 `map topic list --status open`,所有话题 resolved/closed 后停止 waker;具体评论、Round Summary、resolve/close 仍由被唤醒的 Agent 按 Skill 通过 `map` CLI 完成。
268
268
 
@@ -280,7 +280,7 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
280
280
 
281
281
  ## Docker(API + Web)
282
282
 
283
- 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
283
+ 默认 `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
284
 
285
285
  ```bash
286
286
  docker compose up --build
@@ -288,6 +288,23 @@ docker compose up --build
288
288
  # 使用本仓 override 时: API :8001 Web :3000 MCP :18081/mcp
289
289
  ```
290
290
 
291
+ ### FS 事实源与 Docker / 远程部署
292
+
293
+ `map/` 文件夹事实源默认要求 server 与仓库**同文件系统**。容器 / 远程部署时 `map bootstrap` 会在末尾自动探测并给出三态判定(`map fs status` 随时复查):
294
+
295
+ - **`local-fs`**:server 直接读 workspace,全链路可用。
296
+ - **`projection-cache`**:workspace 不可达,但已执行 `map fs push` 上行投影缓存——列表合并 / `map work` 待办 / Web 渲染回退到投影;验证型写(advance-round / close)走 validate → 本地写回 → commit(服务端只校验签发,不再要求写文件)。写完文件或推进轮次后重新 push 即可。
297
+ - **`detached`**:两者皆无——FS 话题对 server 不可见(显式警告,不再静默空列表)。
298
+
299
+ Docker 单机想让 server 直接看到 workspace 时,用同绝对路径挂载(过渡方案;注意 macOS bind mount 性能与容器写文件的属主问题):
300
+
301
+ ```bash
302
+ export MAP_WORKSPACE_PATH=/absolute/path/to/this/repo
303
+ docker compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.fs.yml up
304
+ ```
305
+
306
+ 详见 [架构文档 §4.1 部署矩阵](docs/ARCHITECTURE.md#41-部署矩阵server-能否看到-workspace)。
307
+
291
308
  ## Python SDK
292
309
 
293
310
  ```bash
@@ -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,23 +115,24 @@ 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
132
132
 
133
133
  # CLI 用法(需设置 MAP_TOKEN 或 ~/.map/config.yaml)
134
134
  export MAP_TOKEN=<your-token>
135
+ map --version
135
136
  map project list
136
137
  map status
137
138
  map experiment start --id <exp-id>
@@ -213,7 +214,7 @@ map --persona host status # 查看 open_topics
213
214
  ./scripts/start-simple-waker.sh --persona host --once --dry-run
214
215
  ```
215
216
 
216
- 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳,勿提交 Git)。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
217
+ 状态文件:`.map/simple-waker-state-<persona>.json`(session + remind 时间戳)。`.map/` 整目录 gitignore,勿提交。详见 [docs/MAP-SIMPLE-WAKER.md](docs/MAP-SIMPLE-WAKER.md)。
217
218
 
218
219
  `--drain-topics` 只负责启动/监控:脚本每轮检查 `map topic list --status open`,所有话题 resolved/closed 后停止 waker;具体评论、Round Summary、resolve/close 仍由被唤醒的 Agent 按 Skill 通过 `map` CLI 完成。
219
220
 
@@ -231,7 +232,7 @@ simple-waker 在每次 remind 后会写一条聚合 `inbound_event` 审计行(
231
232
 
232
233
  ## Docker(API + Web)
233
234
 
234
- 默认 `docker-compose.yml` 暴露 API `:8000`、Web `:3000`、MCP `:8080`。本仓包含 `docker-compose.override.yml`,用于本机端口冲突场景,会把 API 改为 `:8001`、MCP 改为 `:18081`;因此本仓 `.map/` bootstrap 示例使用 `http://localhost:8001`。
235
+ 默认 `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
236
 
236
237
  ```bash
237
238
  docker compose up --build
@@ -239,6 +240,23 @@ docker compose up --build
239
240
  # 使用本仓 override 时: API :8001 Web :3000 MCP :18081/mcp
240
241
  ```
241
242
 
243
+ ### FS 事实源与 Docker / 远程部署
244
+
245
+ `map/` 文件夹事实源默认要求 server 与仓库**同文件系统**。容器 / 远程部署时 `map bootstrap` 会在末尾自动探测并给出三态判定(`map fs status` 随时复查):
246
+
247
+ - **`local-fs`**:server 直接读 workspace,全链路可用。
248
+ - **`projection-cache`**:workspace 不可达,但已执行 `map fs push` 上行投影缓存——列表合并 / `map work` 待办 / Web 渲染回退到投影;验证型写(advance-round / close)走 validate → 本地写回 → commit(服务端只校验签发,不再要求写文件)。写完文件或推进轮次后重新 push 即可。
249
+ - **`detached`**:两者皆无——FS 话题对 server 不可见(显式警告,不再静默空列表)。
250
+
251
+ Docker 单机想让 server 直接看到 workspace 时,用同绝对路径挂载(过渡方案;注意 macOS bind mount 性能与容器写文件的属主问题):
252
+
253
+ ```bash
254
+ export MAP_WORKSPACE_PATH=/absolute/path/to/this/repo
255
+ docker compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.fs.yml up
256
+ ```
257
+
258
+ 详见 [架构文档 §4.1 部署矩阵](docs/ARCHITECTURE.md#41-部署矩阵server-能否看到-workspace)。
259
+
242
260
  ## Python SDK
243
261
 
244
262
  ```bash
@@ -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")