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.
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/PKG-INFO +42 -25
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/README.md +28 -10
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/action_item_escalation.py +5 -5
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/agent_client.py +4 -4
- multi_agent_platform-0.6.0/cli/commands/auth.py +104 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/experiment.py +253 -74
- multi_agent_platform-0.6.0/cli/commands/fs.py +658 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/project.py +5 -8
- multi_agent_platform-0.6.0/cli/commands/skill.py +645 -0
- multi_agent_platform-0.6.0/cli/commands/topic.py +1212 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/e2e_collab.py +34 -19
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/local_cache.py +0 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/main.py +220 -285
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/map_command_client.py +23 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/orchestrator.py +2 -4
- multi_agent_platform-0.6.0/cli/persona_compare.py +297 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/project_export.py +5 -8
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime/run_lock.py +7 -7
- multi_agent_platform-0.6.0/cli/shortid.py +111 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/simple_waker.py +6 -6
- multi_agent_platform-0.6.0/cli/skills/experiment-host/SKILL.md +106 -0
- multi_agent_platform-0.6.0/cli/skills/experiment-host/map-plugin.yaml +11 -0
- multi_agent_platform-0.6.0/cli/skills/experiment-host/references/execution-cookbook.md +92 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/experiment-host/references/lifecycle-transitions.md +1 -1
- multi_agent_platform-0.6.0/cli/skills/experiment-reviewer/SKILL.md +69 -0
- multi_agent_platform-0.6.0/cli/skills/experiment-reviewer/map-plugin.yaml +11 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/SKILL.md +133 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/map-plugin.yaml +11 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/map-project-collab/references/bootstrap-troubleshooting.md +7 -5
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/commands.md +153 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/file-reference.md +51 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/platform-feedback.md +37 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/wake.md +51 -0
- multi_agent_platform-0.6.0/cli/skills/map-project-collab/references/waker-mode.md +30 -0
- multi_agent_platform-0.6.0/cli/skills/topic-host/SKILL.md +117 -0
- multi_agent_platform-0.6.0/cli/skills/topic-host/map-plugin.yaml +11 -0
- multi_agent_platform-0.6.0/cli/skills/topic-host/references/experiment-gate-rubric.md +141 -0
- multi_agent_platform-0.6.0/cli/skills/topic-host/references/host-checklist.md +113 -0
- multi_agent_platform-0.6.0/cli/skills/topic-participant/SKILL.md +95 -0
- multi_agent_platform-0.6.0/cli/skills/topic-participant/map-plugin.yaml +11 -0
- multi_agent_platform-0.6.0/cli/skills/topic-participant/references/participant-checklist.md +76 -0
- multi_agent_platform-0.6.0/cli/subcommand_format.py +195 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/PKG-INFO +42 -25
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/SOURCES.txt +72 -11
- multi_agent_platform-0.6.0/multi_agent_platform.egg-info/requires.txt +31 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/top_level.txt +1 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/pyproject.toml +19 -22
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/bootstrap.py +163 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/client.py +125 -1
- multi_agent_platform-0.6.0/sdk/python/map_fs/__init__.py +43 -0
- multi_agent_platform-0.6.0/sdk/python/map_fs/parser.py +588 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_sdk/__init__.py +1 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_types/__init__.py +35 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_types/enums.py +15 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/__init__.py +357 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/a2a.py +57 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/agent.py +57 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/agent_work.py +95 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/audit.py +81 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/base.py +7 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/comment.py +36 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/experiment.py +426 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/feedback.py +47 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/fs.py +182 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/inbound_event.py +57 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/notification.py +39 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/plan.py +38 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/project.py +138 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/review.py +64 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/todo.py +180 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/topic.py +233 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/topic_progress.py +63 -0
- multi_agent_platform-0.6.0/sdk/python/map_types/schemas/webhook.py +48 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/__version__.py +1 -1
- multi_agent_platform-0.6.0/server/api/a2a.py +194 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/bootstrap.py +40 -0
- multi_agent_platform-0.6.0/server/api/docs.py +80 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/experiments.py +11 -2
- multi_agent_platform-0.6.0/server/api/fs.py +486 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/router.py +6 -0
- multi_agent_platform-0.6.0/server/api/topics.py +282 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/config.py +11 -0
- multi_agent_platform-0.6.0/server/domain/a2a_mapping.py +79 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/models.py +60 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/state_machine.py +40 -21
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/main.py +72 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/action_item_service.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/agent_work_service.py +9 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/auth.py +47 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/bootstrap_service.py +4 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/escalation_resolver.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/experiment_capabilities_service.py +24 -2
- multi_agent_platform-0.6.0/server/services/fs_source_service.py +925 -0
- multi_agent_platform-0.6.0/server/services/fs_write_token.py +127 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/lock_service.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/log_service.py +62 -13
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/mention_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/notification_service.py +8 -8
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/persona_activity_service.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/phase_owner_resolver.py +24 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/phase_service.py +89 -11
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/plan_marker_service.py +41 -14
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/plan_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/platform_feedback_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/project_service.py +101 -16
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/project_status_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/review_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/similarity_service.py +6 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/todo_service.py +4 -4
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_ack_service.py +20 -9
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_action_item_ops.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_comment_service.py +17 -5
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_lifecycle_service.py +45 -47
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_resolve_service.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/webhook_service.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_18a64691_linkage.py +10 -5
- multi_agent_platform-0.6.0/tests/test_a2a.py +200 -0
- 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
- 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
- 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
- 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
- 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
- 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
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_action_items.py +116 -212
- multi_agent_platform-0.6.0/tests/test_agent_work.py +79 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_archive_lint_service.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_auth_experiment_access.py +2 -2
- multi_agent_platform-0.6.0/tests/test_auth_reissue.py +149 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_bootstrap.py +103 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_clear_action_template.py +6 -5
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli.py +92 -70
- multi_agent_platform-0.6.0/tests/test_cli_json_schema.py +276 -0
- multi_agent_platform-0.6.0/tests/test_cli_shortid.py +297 -0
- multi_agent_platform-0.6.0/tests/test_cli_subcommand_format.py +204 -0
- multi_agent_platform-0.6.0/tests/test_cli_version_flag.py +62 -0
- multi_agent_platform-0.6.0/tests/test_direct_mode.py +174 -0
- multi_agent_platform-0.6.0/tests/test_docs_consistency.py +210 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_docs_inventory.py +36 -12
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_fast_gate_whitelist_complete.py +1 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_agent_work_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_agents.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_experiment_capabilities_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_experiments_projects.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_mention_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_notification_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_phase_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_project_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_todo_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_comment_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topic_work_item_service.py +3 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_mypy_strict_topics.py +5 -5
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_version_single_source.py +20 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_escalation_resolver.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_executor.py +0 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_notifications.py +7 -7
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_unit.py +9 -9
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiments.py +23 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_field_rename_alias.py +2 -2
- multi_agent_platform-0.6.0/tests/test_fs_remote_mode.py +457 -0
- multi_agent_platform-0.6.0/tests/test_fs_scan_plane_perf_baseline.py +97 -0
- multi_agent_platform-0.6.0/tests/test_fs_source.py +569 -0
- multi_agent_platform-0.6.0/tests/test_gitignore_map_dir.py +28 -0
- multi_agent_platform-0.6.0/tests/test_lint_gate_coverage.py +48 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_local_cache.py +0 -4
- multi_agent_platform-0.6.0/tests/test_m55_error_envelope.py +338 -0
- multi_agent_platform-0.6.0/tests/test_m57_log_slim_form.py +376 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mcp.py +29 -18
- multi_agent_platform-0.6.0/tests/test_mentions.py +433 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_bulk_filter.py +6 -6
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_service_v09.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_orchestrator.py +0 -3
- 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
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_work_hotpath_bulk.py +2 -2
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_persona_activity.py +8 -8
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_revise_auto_archive.py +5 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_export.py +1 -5
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_reject_result_misuse.py +3 -4
- multi_agent_platform-0.6.0/tests/test_required_option_guard.py +104 -0
- multi_agent_platform-0.6.0/tests/test_same_second_host_reply.py +61 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_same_second_trio.py +25 -39
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sdk.py +88 -63
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_server_lock_service.py +6 -6
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker.py +3 -3
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_skill_install.py +1 -6
- multi_agent_platform-0.6.0/tests/test_skill_versioning.py +398 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_todos.py +164 -203
- multi_agent_platform-0.6.0/tests/test_topic_migrate.py +251 -0
- multi_agent_platform-0.6.0/tests/test_topic_notifications.py +57 -0
- multi_agent_platform-0.6.0/tests/test_topic_progress.py +88 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_topic_read_cursor.py +42 -38
- multi_agent_platform-0.6.0/tests/test_topic_routing.py +647 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_topic_work_items.py +128 -151
- multi_agent_platform-0.6.0/tests/test_topics.py +537 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_waker_phase1_acceptance.py +35 -27
- 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
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_webhook_secret_encryption.py +14 -8
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_work_summary.py +45 -40
- multi_agent_platform-0.3.2/cli/commands/skill.py +0 -218
- multi_agent_platform-0.3.2/cli/commands/topic.py +0 -408
- multi_agent_platform-0.3.2/cli/skills/experiment-host/SKILL.md +0 -213
- multi_agent_platform-0.3.2/cli/skills/experiment-reviewer/SKILL.md +0 -121
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/SKILL.md +0 -419
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/agents/openai.yaml +0 -4
- multi_agent_platform-0.3.2/cli/skills/map-project-collab/references/waker-mode.md +0 -65
- multi_agent_platform-0.3.2/cli/skills/topic-host/SKILL.md +0 -303
- multi_agent_platform-0.3.2/cli/skills/topic-host/references/experiment-gate-rubric.md +0 -130
- multi_agent_platform-0.3.2/cli/skills/topic-participant/SKILL.md +0 -168
- multi_agent_platform-0.3.2/multi_agent_platform.egg-info/requires.txt +0 -33
- multi_agent_platform-0.3.2/sdk/python/map_types/schemas.py +0 -1411
- multi_agent_platform-0.3.2/server/api/topics.py +0 -341
- multi_agent_platform-0.3.2/tests/test_agent_work.py +0 -76
- multi_agent_platform-0.3.2/tests/test_mentions.py +0 -882
- multi_agent_platform-0.3.2/tests/test_same_second_host_reply.py +0 -56
- multi_agent_platform-0.3.2/tests/test_topic_notifications.py +0 -101
- multi_agent_platform-0.3.2/tests/test_topic_progress.py +0 -97
- multi_agent_platform-0.3.2/tests/test_topics.py +0 -1163
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/LICENSE +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/bridge_state.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/action.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/agent.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/audit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/docs.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/feedback.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/host.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/notification.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/persona.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/runtime.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/commands/sync.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/host_worker_types.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/participant_worker.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/reviewer_worker.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/runtime_chat.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/session_wake_log.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/experiment-reviewer/references/review-format-guide.md +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/skills/map-project-collab/scripts/map-bootstrap.sh +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/table_render.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/wake_backend.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/cli/worker_cycle_log.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/dependency_links.txt +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/multi_agent_platform.egg-info/entry_points.txt +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/config.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/errors.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/exceptions.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/plan_evidence.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/project_config.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/result_template.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_client/testing.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/_utils.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/auth.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/config.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/context.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/main.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/server.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_mcp/session.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/sdk/python/map_sdk/evidence.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/action_items.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/agents.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/audit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/background_tasks.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/common.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/deps.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/feedback.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/notifications.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/projects.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/status.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/api/webhooks.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/auth/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/auth/experiment_access.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/base.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/db/session.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/encrypted_types.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/schemas.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/domain/topic_ack_constants.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/migrate_notification_unique.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/scripts/purge_audit_pollution.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/__init__.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/_lookups.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/acceptance_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/action_item_migration_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/archive_lint_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/audit_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/comment_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/errors.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/evidence_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/inbound_event_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/notification_stream.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/permissions.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/secret_encryption.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/sse_event_schemas.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/status_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/template_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/text_utils.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/thread_activity.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/todo_persona_filter.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_comment_kind.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_helpers.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_progress_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/server/services/topic_work_item_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/setup.cfg +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_accept_result_verdict.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_agent_client.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_agents_list.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_arch_map_sdk_evidence.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_audit_admin_cli.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_audit_admin_filter.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_auth.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_authz_cross_persona_capability.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_authz_pr3_creator_gating_extended.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_bridge_state.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cleanup_audit_log_no_commit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_error_envelope.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_evidence_contract.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_format_priority.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_n2_hard_cutover.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_schema_discovery.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_status.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_template_contract.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cli_work_deprecation.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_cross_persona_call_audit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_deadlock_retry.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_typing_extensions_clean.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_eng_uv_lock.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_error_codes_cli.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_error_envelope_and_file_options.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_escalation_target_endpoint.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_evidence_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_capabilities.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_capabilities_whitelist.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_experiment_lock_fuzz.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_feedback.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_feedback_admin_cli.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_git_checkpoint.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_inbound_event_rejection.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_log_create_response.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_m2_flow.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_m3_flow.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_map_sdk_skeleton.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mcp_http.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_mention_code_skip_unit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_stream.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notification_upsert_pr2.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_notifications.py +0 -0
- 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
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_participant_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_count_sql_fixture.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_experiment_bundle_verdict_n_plus_one.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_experiment_summary_bulk.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_perf_topic_comments_bulk.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_persona_compare_partition.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_phase_owner_orm_validation.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_phase_owner_resolver.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_evidence_parser.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_marker_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_plan_validate_cli.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_config.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_project_status.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_projects.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_rebutted_plan_continues_e2e.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_register_agent_body_model.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_resolve_item_sdk_contract.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_resolve_item_status.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_result_template_parser.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_already_archived.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_archived_metadata.py +1 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_eligibility.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_item_mutation_audit.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_item_state_closed_migration.py +1 -1
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_list_archived_filter.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_substitute_and_withdraw.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_review_verdict_alias.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_reviewer_worker_claude_agent.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_runtime_chat.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sdk_exceptions.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_session_wake_log.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_similarity_api_contract.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_similarity_service.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker_pr3_dedup.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_simple_waker_reviewer_filter.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_acceptance.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_isolation.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_sse_schema_overlap.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_state_machine.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_state_machine_recovery_hint.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_systemd_install.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_template_api_contract.py +0 -0
- {multi_agent_platform-0.3.2 → multi_agent_platform-0.6.0}/tests/test_template_service.py +0 -0
- {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
|
+
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.
|
|
21
|
-
Requires-Dist: httpx<
|
|
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<
|
|
23
|
+
Requires-Dist: pydantic<3,>=2.10.0
|
|
24
24
|
Provides-Extra: server
|
|
25
|
-
Requires-Dist: fastapi<
|
|
26
|
-
Requires-Dist: uvicorn[standard]<
|
|
27
|
-
Requires-Dist: sqlalchemy<
|
|
28
|
-
Requires-Dist: alembic<
|
|
29
|
-
Requires-Dist: pydantic-settings<
|
|
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<
|
|
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<
|
|
36
|
-
Requires-Dist: pytest-asyncio<
|
|
37
|
-
Requires-Dist: pytest-cov<
|
|
38
|
-
Requires-Dist: httpx<
|
|
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
|
-
- [
|
|
110
|
-
- [
|
|
111
|
-
- [
|
|
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.
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
- [
|
|
61
|
-
- [
|
|
62
|
-
- [
|
|
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.
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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=
|
|
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=
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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")
|