mapify-cli 3.20.0__tar.gz → 3.21.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.
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/PKG-INFO +1 -1
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/pyproject.toml +1 -1
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/__init__.py +13 -1
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/config/project_config.py +277 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/file_copier.py +97 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/providers.py +10 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/dependency_graph.py +315 -1
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/minimality_report.py +1 -1
- mapify_cli-3.21.0/src/mapify_cli/parallelism_observability.py +293 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/monitor.md +32 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/AGENTS.md +1 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/codex/agents/evaluator.toml +271 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/agents/monitor.toml +13 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/codex/agents/predictor.toml +423 -0
- {mapify_cli-3.20.0/tests/fixtures → mapify_cli-3.21.0/src/mapify_cli/templates}/codex/config.toml +8 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +16 -4
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +127 -12
- mapify_cli-3.21.0/src/mapify_cli/templates/codex/skills/map-review/SKILL.md +361 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/codex/skills/map-review/adversarial-reference.md +218 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/codex/skills/map-review/review-reference.md +360 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/hooks/map-statusline.py +189 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +80 -2
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +533 -14
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +9476 -4950
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +69 -6
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +14 -17
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +219 -8
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +11 -5
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +15 -42
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +77 -2
- mapify_cli-3.21.0/src/mapify_cli/templates/skills/map-review/adversarial-reference.md +148 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/skills/map-review/review-reference.md +127 -0
- mapify_cli-3.21.0/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +247 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +32 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +1 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/codex/agents/evaluator.toml.jinja +271 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +13 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/codex/agents/predictor.toml.jinja +423 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +8 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +16 -4
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +127 -12
- mapify_cli-3.21.0/src/mapify_cli/templates_src/codex/skills/map-review/SKILL.md.jinja +361 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/codex/skills/map-review/adversarial-reference.md.jinja +218 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/codex/skills/map-review/review-reference.md.jinja +360 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/hooks/map-statusline.py.jinja +189 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +80 -2
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +533 -14
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +9476 -4950
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +69 -6
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +14 -17
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +219 -8
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +11 -5
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +15 -42
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +77 -2
- mapify_cli-3.21.0/src/mapify_cli/templates_src/skills/map-review/adversarial-reference.md.jinja +148 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +127 -0
- mapify_cli-3.21.0/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +247 -0
- mapify_cli-3.21.0/tests/_fake_task_tool.py +107 -0
- {mapify_cli-3.20.0/src/mapify_cli/templates → mapify_cli-3.21.0/tests/fixtures}/codex/config.toml +8 -0
- mapify_cli-3.21.0/tests/fixtures/wave_blueprints.py +393 -0
- mapify_cli-3.21.0/tests/test_concurrent_dispatch_harness.py +717 -0
- mapify_cli-3.21.0/tests/test_cross_ai_config.py +72 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_dependency_graph.py +211 -1
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_map_orchestrator.py +1428 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_map_step_runner.py +2972 -3
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_map_token_meter.py +207 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_mapify_cli.py +62 -5
- mapify_cli-3.21.0/tests/test_parallelism_observability.py +575 -0
- mapify_cli-3.21.0/tests/test_project_config.py +442 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills.py +34 -5
- mapify_cli-3.21.0/tests/test_slice5b_leak_guards.py +575 -0
- mapify_cli-3.21.0/tests/test_statusline.py +354 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_validate_spec_citations.py +100 -0
- mapify_cli-3.21.0/tests/test_wave_eval_harness.py +233 -0
- mapify_cli-3.21.0/tests/test_wave_fixtures.py +214 -0
- mapify_cli-3.21.0/tests/test_wave_parallel_harness.py +348 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_workflow_context_injector.py +208 -0
- mapify_cli-3.21.0/tests/test_worktree_isolation.py +696 -0
- mapify_cli-3.20.0/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -69
- mapify_cli-3.20.0/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -134
- mapify_cli-3.20.0/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -69
- mapify_cli-3.20.0/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -134
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/.gitignore +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/LICENSE +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/schemas.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/scrub-internal-ids.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/conftest.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/hooks/test_scrub_internal_ids_hook.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_scrub_internal_ids.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.20.0 → mapify_cli-3.21.0}/tests/test_workflow_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.21.0
|
|
4
4
|
Summary: MAP Framework installer - Modular Agentic Planner for Claude Code
|
|
5
5
|
Project-URL: Homepage, https://github.com/azalio/map-framework
|
|
6
6
|
Project-URL: Repository, https://github.com/azalio/map-framework.git
|
|
@@ -23,7 +23,7 @@ Or install globally:
|
|
|
23
23
|
mapify check
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
__version__ = "3.
|
|
26
|
+
__version__ = "3.21.0"
|
|
27
27
|
|
|
28
28
|
import os
|
|
29
29
|
import subprocess
|
|
@@ -933,6 +933,18 @@ def init(
|
|
|
933
933
|
total_claude = sum(claude_counts.values())
|
|
934
934
|
tracker.complete("create-claude", f"{total_claude} files")
|
|
935
935
|
|
|
936
|
+
# Surface the non-destructive statusline decision so the user knows
|
|
937
|
+
# whether the context status row was wired or their own was preserved.
|
|
938
|
+
if claude_counts.get("statusline"):
|
|
939
|
+
console.print(
|
|
940
|
+
"[dim]· Context statusline → .claude/settings.local.json "
|
|
941
|
+
"(remove the statusLine key there to disable)[/dim]"
|
|
942
|
+
)
|
|
943
|
+
else:
|
|
944
|
+
console.print(
|
|
945
|
+
"[dim]· Existing statusLine detected — MAP statusline not wired[/dim]"
|
|
946
|
+
)
|
|
947
|
+
|
|
936
948
|
# Create default .map/config.yaml (project-level settings)
|
|
937
949
|
tracker.add("map-config", "Create .map/config.yaml")
|
|
938
950
|
tracker.start("map-config")
|
|
@@ -17,6 +17,14 @@ logger = logging.getLogger(__name__)
|
|
|
17
17
|
|
|
18
18
|
VALID_MINIMALITY = frozenset({"off", "lite", "full", "ultra"})
|
|
19
19
|
VALID_PROMPT_LAYERING = frozenset({"docs_first", "stable_first"})
|
|
20
|
+
VALID_WORKTREE_ISOLATION = frozenset({"off", "auto", "required"})
|
|
21
|
+
VALID_WAVE_MODE = frozenset({"off", "auto", "on"})
|
|
22
|
+
|
|
23
|
+
# Cross-AI peer review (#288): external AI CLI runtimes map-review can dispatch
|
|
24
|
+
# to. Keep in sync with CROSS_AI_RUNTIMES in the rendered step runner
|
|
25
|
+
# (map_step_runner.py) — the runner owns the per-runtime invocation adapters;
|
|
26
|
+
# this set only gates the config value so a typo falls back to the default.
|
|
27
|
+
VALID_CROSS_AI_RUNTIMES = frozenset({"claude", "codex", "gemini", "opencode"})
|
|
20
28
|
|
|
21
29
|
|
|
22
30
|
@dataclass
|
|
@@ -128,6 +136,127 @@ class MapConfig:
|
|
|
128
136
|
# and keep the IDs the framework wrote into comments/strings/test names.
|
|
129
137
|
scrub_internal_ids: bool = True
|
|
130
138
|
|
|
139
|
+
# Cross-AI peer review (#288) — opt-in, OFF by default. When enabled AND the
|
|
140
|
+
# operator passes `map-review --cross-ai <runtime>`, the review is dispatched
|
|
141
|
+
# to an INDEPENDENT external AI CLI (codex/gemini/claude/opencode) for a
|
|
142
|
+
# second opinion. This is a DOUBLE-CONSENT gate: the per-run flag is the
|
|
143
|
+
# explicit egress consent (your diff/code is sent to an external vendor), and
|
|
144
|
+
# `review.cross_ai.enabled` is the org-level kill-switch — both must be true.
|
|
145
|
+
# Dotted YAML keys `review.cross_ai.{enabled,runtime,timeout_seconds}` alias
|
|
146
|
+
# to these snake_case fields (see load_map_config).
|
|
147
|
+
review_cross_ai_enabled: bool = False
|
|
148
|
+
# Default external runtime used when `--cross-ai` is passed without an
|
|
149
|
+
# explicit runtime name. Validated against VALID_CROSS_AI_RUNTIMES.
|
|
150
|
+
review_cross_ai_runtime: str = "codex"
|
|
151
|
+
# Per-dispatch timeout (seconds) for the external CLI subprocess. A real
|
|
152
|
+
# review can take minutes; default 180 balances latency against hangs.
|
|
153
|
+
review_cross_ai_timeout_seconds: int = 180
|
|
154
|
+
|
|
155
|
+
# Per-subtask git worktree isolation (#284) — opt-in, OFF by default. When
|
|
156
|
+
# enabled, `/map-efficient` runs each subtask's Actor inside a dedicated git
|
|
157
|
+
# worktree (stored OUT of the working tree, under the repo's common git dir),
|
|
158
|
+
# then atomically squash-merges the result into the working branch ONLY after
|
|
159
|
+
# the configured `verification_checks` pass IN the worktree (pre-merge gate).
|
|
160
|
+
# A rejected attempt (Monitor/Evaluator fail) discards the worktree, so the
|
|
161
|
+
# working branch is never touched by a bad attempt. This is a TOP-LEVEL
|
|
162
|
+
# filesystem concern, deliberately NOT nested under review/sofa. Dotted YAML
|
|
163
|
+
# key `worktree.isolation` aliases to this snake_case field (see
|
|
164
|
+
# load_map_config). The step runner owns the lifecycle + safety guards.
|
|
165
|
+
# Enum values:
|
|
166
|
+
# "off" — never create worktrees; sequential execution always.
|
|
167
|
+
# "auto" — create per-subtask worktrees when a parallel color-group
|
|
168
|
+
# dispatches; degrade to sequential with a loud warning when git
|
|
169
|
+
# worktrees are unavailable (non-git repo, shallow clone, etc.).
|
|
170
|
+
# default ON (Slice 6); disable via MAP_EFFICIENT_SEQUENTIAL_ONLY=1
|
|
171
|
+
# or set `worktree.isolation: off` in .map/config.yaml.
|
|
172
|
+
# "required" — hard-fail before parallel dispatch if worktrees are unavailable.
|
|
173
|
+
# Backward compat: YAML boolean `false` migrates to `"off"`, `true` to
|
|
174
|
+
# `"required"` in load_map_config.
|
|
175
|
+
worktree_isolation: str = "auto"
|
|
176
|
+
# Bulk-deletion guard threshold: the per-subtask merge refuses when the
|
|
177
|
+
# worktree branch deletes MORE than this many files vs the base commit
|
|
178
|
+
# (catches `rm -rf` / hallucinated mass deletion before it reaches the
|
|
179
|
+
# working branch). 0 disables the guard. Dotted YAML key
|
|
180
|
+
# `worktree.max_deletions`.
|
|
181
|
+
worktree_max_deletions: int = 50
|
|
182
|
+
|
|
183
|
+
# Parallel wave execution mode (#303, Slice 0 scaffolding — no behavior change
|
|
184
|
+
# until Slice 3/5 promote the wave-loop to default). Controls whether
|
|
185
|
+
# `/map-efficient` routes multi-subtask waves through the parallel wave
|
|
186
|
+
# coordinator or the sequential single-subtask walker.
|
|
187
|
+
# Enum values:
|
|
188
|
+
# "auto" — (default) engage the wave-loop when the color-group has >=2
|
|
189
|
+
# independent subtasks AND worktree.isolation != "off"; degrade to
|
|
190
|
+
# sequential otherwise. Slice 0: behaves as sequential everywhere
|
|
191
|
+
# (the wave-loop promotion and concurrent dispatch land in Slice 3/5).
|
|
192
|
+
# "off" — always sequential; the legacy walker; instant rollback escape hatch.
|
|
193
|
+
# "on" — always attempt parallel dispatch (reserved for Slice 5/6; same as
|
|
194
|
+
# "auto" until the concurrent-dispatch step lands).
|
|
195
|
+
# Dotted YAML key `execution.wave_mode` aliases to this field. YAML 1.1 parses
|
|
196
|
+
# bare `off`/`on` as booleans — load_map_config migrates them to strings.
|
|
197
|
+
execution_wave_mode: str = "auto"
|
|
198
|
+
|
|
199
|
+
# Maximum number of concurrent Actor workers in a parallel wave dispatch (#303
|
|
200
|
+
# Slice 5b). Range 1–8; out-of-range values are clamped by clamp_max_actors().
|
|
201
|
+
# Non-int / bool values fall back to the default 4 (see clamp_max_actors).
|
|
202
|
+
# Dotted YAML key: `execution.max_actors`.
|
|
203
|
+
# DORMANT in Slice 5a — parsed and validated but no execution path reads it yet.
|
|
204
|
+
max_actors: int = 4
|
|
205
|
+
|
|
206
|
+
# When True, a single worker that crashes with a transient error in a parallel
|
|
207
|
+
# wave will be retried once before the wave is aborted. Pairs with max_actors
|
|
208
|
+
# in Slice 5b concurrent dispatch. Dotted YAML key: `execution.retry_degraded_once`.
|
|
209
|
+
# DORMANT in Slice 5a — parsed and validated but no execution path reads it yet.
|
|
210
|
+
retry_degraded_once: bool = False
|
|
211
|
+
|
|
212
|
+
# Enable same-turn concurrent Actor dispatch in a parallel wave (#303 Slice 5b).
|
|
213
|
+
# default ON (Slice 6); disable via MAP_EFFICIENT_SEQUENTIAL_ONLY=1 (global
|
|
214
|
+
# kill-switch) or set `execution.concurrent_dispatch: false` in .map/config.yaml.
|
|
215
|
+
# Dotted YAML alias: `execution.concurrent_dispatch`.
|
|
216
|
+
# YAML 1.1 bare off/on arrive as Python bool, which matches this field type —
|
|
217
|
+
# no coercion needed (unlike the string enum fields).
|
|
218
|
+
concurrent_dispatch: bool = True
|
|
219
|
+
|
|
220
|
+
# Bounded retry cap for whole-wave rollback/restart in Slice 5b (#303).
|
|
221
|
+
# Range 1–10; values outside the range are clamped by clamp_max_wave_retries().
|
|
222
|
+
# Non-int / bool values fall back to the default 3.
|
|
223
|
+
# Dotted YAML alias: `execution.max_wave_retries`.
|
|
224
|
+
# DORMANT in 5b.0 — consumed by ST-006's rollback path; no execution path reads
|
|
225
|
+
# it yet.
|
|
226
|
+
max_wave_retries: int = 3
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def clamp_max_actors(n: object) -> int:
|
|
230
|
+
"""Clamp max_actors to the valid range [1, 8], or return the default 4.
|
|
231
|
+
|
|
232
|
+
Non-int values (including bool, str, None) return the default 4.
|
|
233
|
+
int values are clamped: below 1 → 1, above 8 → 8.
|
|
234
|
+
|
|
235
|
+
Note: bool is explicitly excluded (isinstance(True, int) is True in Python)
|
|
236
|
+
because a YAML boolean arriving here is a misconfiguration, not an int.
|
|
237
|
+
The floor is 1, NOT the default 4 — a valid-but-low int (e.g. 0) is clamped
|
|
238
|
+
to 1 (minimum legal value), while a non-int/bool/None falls back to 4.
|
|
239
|
+
"""
|
|
240
|
+
if isinstance(n, bool) or not isinstance(n, int):
|
|
241
|
+
return 4
|
|
242
|
+
return max(1, min(8, n))
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
def clamp_max_wave_retries(n: object) -> int:
|
|
246
|
+
"""Clamp max_wave_retries to the valid range [1, 10], or return the default 3.
|
|
247
|
+
|
|
248
|
+
Non-int values (including bool, str, None) return the default 3.
|
|
249
|
+
int values are clamped: below 1 → 1, above 10 → 10.
|
|
250
|
+
|
|
251
|
+
Note: bool is explicitly excluded (isinstance(True, int) is True in Python)
|
|
252
|
+
because a YAML boolean arriving here is a misconfiguration, not an int.
|
|
253
|
+
The floor is 1 — a valid-but-low int (e.g. 0) is clamped to 1 (minimum
|
|
254
|
+
legal value), while a non-int/bool/None falls back to the default 3.
|
|
255
|
+
"""
|
|
256
|
+
if isinstance(n, bool) or not isinstance(n, int):
|
|
257
|
+
return 3
|
|
258
|
+
return max(1, min(10, n))
|
|
259
|
+
|
|
131
260
|
|
|
132
261
|
def load_map_config(project_path: Path) -> MapConfig:
|
|
133
262
|
"""Load MAP config from .map/config.yaml with fallback to defaults.
|
|
@@ -187,6 +316,38 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
187
316
|
if isinstance(data, dict) and "sofa.enabled" in data and "sofa_enabled" not in data:
|
|
188
317
|
data["sofa_enabled"] = data.pop("sofa.enabled")
|
|
189
318
|
|
|
319
|
+
# Cross-AI peer review (#288): dotted hierarchical YAML keys
|
|
320
|
+
# `review.cross_ai.*` alias to flat snake_case dataclass fields. Without
|
|
321
|
+
# this the toggles are silent dead fields (load logs "unknown key" and
|
|
322
|
+
# the defaults stand even when the YAML sets them).
|
|
323
|
+
for dotted, field_name in (
|
|
324
|
+
("review.cross_ai.enabled", "review_cross_ai_enabled"),
|
|
325
|
+
("review.cross_ai.runtime", "review_cross_ai_runtime"),
|
|
326
|
+
("review.cross_ai.timeout_seconds", "review_cross_ai_timeout_seconds"),
|
|
327
|
+
("worktree.isolation", "worktree_isolation"),
|
|
328
|
+
("worktree.max_deletions", "worktree_max_deletions"),
|
|
329
|
+
("execution.wave_mode", "execution_wave_mode"),
|
|
330
|
+
("execution.max_actors", "max_actors"),
|
|
331
|
+
("execution.retry_degraded_once", "retry_degraded_once"),
|
|
332
|
+
("execution.concurrent_dispatch", "concurrent_dispatch"),
|
|
333
|
+
("execution.max_wave_retries", "max_wave_retries"),
|
|
334
|
+
):
|
|
335
|
+
if dotted in data and field_name not in data:
|
|
336
|
+
data[field_name] = data.pop(dotted)
|
|
337
|
+
|
|
338
|
+
# Backward compat: worktree_isolation was a bool field; YAML `false`/`true`
|
|
339
|
+
# (and YAML 1.1 `off`/`on`) arrive as Python booleans. Migrate to the new
|
|
340
|
+
# enum string before the type-check loop (which expects str).
|
|
341
|
+
if isinstance(data.get("worktree_isolation"), bool):
|
|
342
|
+
data["worktree_isolation"] = (
|
|
343
|
+
"required" if data["worktree_isolation"] else "off"
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
# YAML 1.1 parses bare `off`/`on` as booleans for execution.wave_mode too.
|
|
347
|
+
# Coerce back to strings: False->"off", True->"on".
|
|
348
|
+
if isinstance(data.get("execution_wave_mode"), bool):
|
|
349
|
+
data["execution_wave_mode"] = "on" if data["execution_wave_mode"] else "off"
|
|
350
|
+
|
|
190
351
|
# YAML 1.1 parses bare ``off``/``on`` as booleans, so ``minimality: off``
|
|
191
352
|
# — the documented opt-out from the lite default (#183) — arrives as bool
|
|
192
353
|
# ``False``. Coerce it back to the string level before the type-check loop;
|
|
@@ -262,6 +423,61 @@ def load_map_config(project_path: Path) -> MapConfig:
|
|
|
262
423
|
)
|
|
263
424
|
cfg.prompt_layering = "docs_first"
|
|
264
425
|
|
|
426
|
+
if cfg.review_cross_ai_runtime not in VALID_CROSS_AI_RUNTIMES:
|
|
427
|
+
logger.warning(
|
|
428
|
+
"Invalid review_cross_ai_runtime %r in %s (expected one of %s). "
|
|
429
|
+
"Using default 'codex'.",
|
|
430
|
+
cfg.review_cross_ai_runtime,
|
|
431
|
+
config_file,
|
|
432
|
+
", ".join(sorted(VALID_CROSS_AI_RUNTIMES)),
|
|
433
|
+
)
|
|
434
|
+
cfg.review_cross_ai_runtime = "codex"
|
|
435
|
+
|
|
436
|
+
if cfg.review_cross_ai_timeout_seconds <= 0:
|
|
437
|
+
logger.warning(
|
|
438
|
+
"review_cross_ai_timeout_seconds must be > 0 in %s "
|
|
439
|
+
"(got %d). Using default 180.",
|
|
440
|
+
config_file,
|
|
441
|
+
cfg.review_cross_ai_timeout_seconds,
|
|
442
|
+
)
|
|
443
|
+
cfg.review_cross_ai_timeout_seconds = 180
|
|
444
|
+
|
|
445
|
+
if cfg.worktree_max_deletions < 0:
|
|
446
|
+
logger.warning(
|
|
447
|
+
"worktree_max_deletions must be >= 0 in %s "
|
|
448
|
+
"(got %d). Using default 50.",
|
|
449
|
+
config_file,
|
|
450
|
+
cfg.worktree_max_deletions,
|
|
451
|
+
)
|
|
452
|
+
cfg.worktree_max_deletions = 50
|
|
453
|
+
|
|
454
|
+
if cfg.worktree_isolation not in VALID_WORKTREE_ISOLATION:
|
|
455
|
+
logger.warning(
|
|
456
|
+
"Invalid worktree_isolation %r in %s (expected one of %s). "
|
|
457
|
+
"Using default 'off'.",
|
|
458
|
+
cfg.worktree_isolation,
|
|
459
|
+
config_file,
|
|
460
|
+
", ".join(sorted(VALID_WORKTREE_ISOLATION)),
|
|
461
|
+
)
|
|
462
|
+
cfg.worktree_isolation = "off"
|
|
463
|
+
|
|
464
|
+
if cfg.execution_wave_mode not in VALID_WAVE_MODE:
|
|
465
|
+
logger.warning(
|
|
466
|
+
"Invalid execution_wave_mode %r in %s (expected one of %s). "
|
|
467
|
+
"Using default 'auto'.",
|
|
468
|
+
cfg.execution_wave_mode,
|
|
469
|
+
config_file,
|
|
470
|
+
", ".join(sorted(VALID_WAVE_MODE)),
|
|
471
|
+
)
|
|
472
|
+
cfg.execution_wave_mode = "auto"
|
|
473
|
+
|
|
474
|
+
# Clamp max_actors to [1, 8]; non-int/bool → default 4.
|
|
475
|
+
# retry_degraded_once and concurrent_dispatch are plain bools handled by
|
|
476
|
+
# the generic type-check loop.
|
|
477
|
+
cfg.max_actors = clamp_max_actors(cfg.max_actors)
|
|
478
|
+
# Clamp max_wave_retries to [1, 10]; non-int/bool → default 3.
|
|
479
|
+
cfg.max_wave_retries = clamp_max_wave_retries(cfg.max_wave_retries)
|
|
480
|
+
|
|
265
481
|
return cfg
|
|
266
482
|
|
|
267
483
|
except yaml.YAMLError as e:
|
|
@@ -391,6 +607,67 @@ minimality: lite
|
|
|
391
607
|
# Enable via `mapify init --sofa` or uncomment the line below.
|
|
392
608
|
# sofa.enabled: false
|
|
393
609
|
|
|
610
|
+
# Cross-AI peer review (#288) — opt-in, OFF by default. When enabled AND you run
|
|
611
|
+
# `map-review --cross-ai <runtime>`, the review is dispatched to an INDEPENDENT
|
|
612
|
+
# external AI CLI (codex/gemini/claude/opencode) for a second opinion. DOUBLE
|
|
613
|
+
# CONSENT: your diff/code is sent to an external vendor, so BOTH the per-run flag
|
|
614
|
+
# AND `review.cross_ai.enabled: true` are required. Returned findings always
|
|
615
|
+
# enter context behind an EXTERNAL UNTRUSTED REFERENCE boundary (quote, never
|
|
616
|
+
# execute, verify against source).
|
|
617
|
+
# review.cross_ai.enabled: false
|
|
618
|
+
# review.cross_ai.runtime: codex # default target: claude|codex|gemini|opencode
|
|
619
|
+
# review.cross_ai.timeout_seconds: 180
|
|
620
|
+
|
|
621
|
+
# Per-subtask git worktree isolation (#284). Controls filesystem isolation for
|
|
622
|
+
# each Actor run in `/map-efficient`. Enum values:
|
|
623
|
+
# off — never create worktrees; sequential execution always.
|
|
624
|
+
# auto — (DEFAULT, Slice 6) create per-subtask worktrees when a parallel
|
|
625
|
+
# color-group dispatches; degrade gracefully to sequential when git
|
|
626
|
+
# worktrees are unavailable (non-git repo, shallow clone, etc.).
|
|
627
|
+
# required — hard-fail before dispatch if worktrees are unavailable (first-party
|
|
628
|
+
# repos that must never degrade silently).
|
|
629
|
+
# When on (auto/required), each Actor runs inside a dedicated git worktree stored
|
|
630
|
+
# under the repo's .git common dir and is squash-merged back ONLY after
|
|
631
|
+
# verification_checks pass. A rejected attempt is discarded — the working branch
|
|
632
|
+
# is never touched by a bad Actor attempt.
|
|
633
|
+
# OFF-RAMPS: set worktree.isolation: off (per-repo opt-out) OR set env
|
|
634
|
+
# MAP_EFFICIENT_SEQUENTIAL_ONLY=1 (global kill-switch — forces full legacy path).
|
|
635
|
+
# Backward compat: the old boolean `false`/`true` still works (migrates to off/required).
|
|
636
|
+
# worktree.isolation: auto # default ON (Slice 6); use off to revert
|
|
637
|
+
# worktree.max_deletions: 50 # refuse a merge deleting more than N files (0 = off)
|
|
638
|
+
|
|
639
|
+
# Parallel wave execution mode (#303). Controls whether `/map-efficient` routes
|
|
640
|
+
# multi-subtask waves through the parallel coordinator or the sequential walker.
|
|
641
|
+
# auto — (default) engage the wave-loop when >=2 independent subtasks AND
|
|
642
|
+
# worktree.isolation != off; otherwise sequential.
|
|
643
|
+
# off — always sequential; instant rollback escape hatch.
|
|
644
|
+
# on — always attempt parallel (same as auto in Slice 6).
|
|
645
|
+
# execution.wave_mode: auto
|
|
646
|
+
|
|
647
|
+
# Concurrent Actor limit for parallel wave dispatch (#303 Slice 5b).
|
|
648
|
+
# Valid range 1–8; values outside the range are clamped (0→1, 9→8).
|
|
649
|
+
# Non-int / bool values fall back to the default 4.
|
|
650
|
+
# execution.max_actors: 4
|
|
651
|
+
|
|
652
|
+
# Retry a crashed worker once before aborting the wave (Slice 5b).
|
|
653
|
+
# execution.retry_degraded_once: false
|
|
654
|
+
|
|
655
|
+
# Enable same-turn concurrent Actor dispatch (#303 Slice 6). DEFAULT True.
|
|
656
|
+
# YAML 1.1 bare off/on arrive as bool.
|
|
657
|
+
# OFF-RAMPS: set false here (per-repo opt-out) OR MAP_EFFICIENT_SEQUENTIAL_ONLY=1 (global).
|
|
658
|
+
# execution.concurrent_dispatch: true # default ON (Slice 6); use false to revert
|
|
659
|
+
|
|
660
|
+
# Bounded retry cap for whole-wave rollback/restart (#303 Slice 5b).
|
|
661
|
+
# Valid range 1–10; values outside the range are clamped (0→1, 99→10).
|
|
662
|
+
# Non-int / bool values fall back to the default 3.
|
|
663
|
+
# execution.max_wave_retries: 3
|
|
664
|
+
|
|
665
|
+
# Global kill-switch (Slice 6 off-ramp). Forces the FULL legacy sequential path
|
|
666
|
+
# regardless of any config — no wave-loop, no worktrees, no concurrent dispatch.
|
|
667
|
+
# Byte-identical to pre-5a legacy behavior. Set as an environment variable:
|
|
668
|
+
# export MAP_EFFICIENT_SEQUENTIAL_ONLY=1 # or true/yes/y/on
|
|
669
|
+
# Unset (or empty / "0" / "false") to restore default parallel behavior.
|
|
670
|
+
|
|
394
671
|
# Strip MAP-internal workflow IDs (ST-/AC-/VC-/INV-/HC-) from the code a run
|
|
395
672
|
# changed, at workflow completion (Stop hook). On by default; uncomment and set
|
|
396
673
|
# to false to keep the IDs the framework wrote into comments/strings/test names.
|
|
@@ -6,6 +6,7 @@ import importlib.util
|
|
|
6
6
|
import json
|
|
7
7
|
import os
|
|
8
8
|
import shutil
|
|
9
|
+
from dataclasses import dataclass
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
from typing import List
|
|
11
12
|
|
|
@@ -623,6 +624,102 @@ def create_config_files(
|
|
|
623
624
|
return count
|
|
624
625
|
|
|
625
626
|
|
|
627
|
+
@dataclass
|
|
628
|
+
class StatuslineResult:
|
|
629
|
+
"""Outcome of :func:`ensure_map_statusline`.
|
|
630
|
+
|
|
631
|
+
``wired`` is True only when a fresh ``statusLine`` entry was written.
|
|
632
|
+
``reason`` is ``"wired"`` on success, or ``"existing:<scope>"`` when an
|
|
633
|
+
existing status line in the ``user`` / ``project`` / ``local`` scope was
|
|
634
|
+
detected and left untouched.
|
|
635
|
+
"""
|
|
636
|
+
|
|
637
|
+
wired: bool
|
|
638
|
+
reason: str
|
|
639
|
+
settings_path: Path | None = None
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
def _read_json_object(path: Path) -> dict | None:
|
|
643
|
+
"""Return a parsed JSON object, or None if missing/unreadable/not an object."""
|
|
644
|
+
try:
|
|
645
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
646
|
+
except (OSError, ValueError):
|
|
647
|
+
return None
|
|
648
|
+
return data if isinstance(data, dict) else None
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
def _has_status_line(path: Path) -> bool:
|
|
652
|
+
"""True when *path* is a settings JSON that already defines a ``statusLine``."""
|
|
653
|
+
obj = _read_json_object(path)
|
|
654
|
+
return bool(obj and obj.get("statusLine"))
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
def ensure_map_statusline(
|
|
658
|
+
project_path: Path,
|
|
659
|
+
*,
|
|
660
|
+
home: Path | None = None,
|
|
661
|
+
) -> StatuslineResult:
|
|
662
|
+
"""Non-destructively wire the MAP context status line.
|
|
663
|
+
|
|
664
|
+
Claude Code's ``statusLine`` setting fully owns the status row, so MAP must
|
|
665
|
+
never overwrite a status line the user already configured. This detects an
|
|
666
|
+
existing ``statusLine`` in every scope MAP must respect — highest precedence
|
|
667
|
+
first —
|
|
668
|
+
|
|
669
|
+
* ``<project>/.claude/settings.local.json`` (project-local overrides)
|
|
670
|
+
* ``<project>/.claude/settings.json`` (project, MAP-managed)
|
|
671
|
+
* ``~/.claude/settings.json`` (user global)
|
|
672
|
+
|
|
673
|
+
and, only when NONE is present, merges a ``statusLine`` entry pointing at the
|
|
674
|
+
installed ``map-statusline.py`` hook into ``.claude/settings.local.json``.
|
|
675
|
+
|
|
676
|
+
``settings.local.json`` is deliberately chosen over the MAP-managed
|
|
677
|
+
``settings.json``: it is user-owned and never re-rendered by the managed
|
|
678
|
+
copier, so the injection introduces no template drift and creates no ``.bak``
|
|
679
|
+
churn on upgrade. The merge preserves any pre-existing keys in that file, and
|
|
680
|
+
the operation is idempotent — a second ``mapify init`` detects MAP's own
|
|
681
|
+
entry and skips.
|
|
682
|
+
|
|
683
|
+
Args:
|
|
684
|
+
project_path: Root of the target project.
|
|
685
|
+
home: Override for the user home directory (test seam). Defaults to
|
|
686
|
+
``Path.home()``.
|
|
687
|
+
|
|
688
|
+
Returns:
|
|
689
|
+
StatuslineResult describing whether a status line was wired or skipped.
|
|
690
|
+
"""
|
|
691
|
+
home_dir = home if home is not None else Path.home()
|
|
692
|
+
claude_dir = project_path / ".claude"
|
|
693
|
+
scope_paths = {
|
|
694
|
+
"local": claude_dir / "settings.local.json",
|
|
695
|
+
"project": claude_dir / "settings.json",
|
|
696
|
+
"user": home_dir / ".claude" / "settings.json",
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
# Highest-precedence scope first so the reported scope is the one that would
|
|
700
|
+
# actually win at runtime.
|
|
701
|
+
for scope in ("local", "project", "user"):
|
|
702
|
+
if _has_status_line(scope_paths[scope]):
|
|
703
|
+
return StatuslineResult(wired=False, reason=f"existing:{scope}")
|
|
704
|
+
|
|
705
|
+
local_settings = scope_paths["local"]
|
|
706
|
+
hook_path = claude_dir / "hooks" / "map-statusline.py"
|
|
707
|
+
# Absolute, quoted path: settings.local.json is machine-local, and quoting
|
|
708
|
+
# keeps the shell-invoked command correct when the project path has spaces.
|
|
709
|
+
command = f'"{hook_path}"'
|
|
710
|
+
|
|
711
|
+
settings = _read_json_object(local_settings) or {}
|
|
712
|
+
settings["statusLine"] = {"type": "command", "command": command}
|
|
713
|
+
|
|
714
|
+
claude_dir.mkdir(parents=True, exist_ok=True)
|
|
715
|
+
local_settings.write_text(
|
|
716
|
+
json.dumps(settings, indent=2) + "\n", encoding="utf-8"
|
|
717
|
+
)
|
|
718
|
+
return StatuslineResult(
|
|
719
|
+
wired=True, reason="wired", settings_path=local_settings
|
|
720
|
+
)
|
|
721
|
+
|
|
722
|
+
|
|
626
723
|
def create_rules_dir(
|
|
627
724
|
project_path: Path,
|
|
628
725
|
drift_report: DriftReport | None = None,
|
|
@@ -14,6 +14,7 @@ from mapify_cli.delivery.file_copier import (
|
|
|
14
14
|
create_config_files,
|
|
15
15
|
create_map_tools,
|
|
16
16
|
create_rules_dir,
|
|
17
|
+
ensure_map_statusline,
|
|
17
18
|
)
|
|
18
19
|
|
|
19
20
|
|
|
@@ -53,6 +54,10 @@ class ClaudeProvider(BaseProvider):
|
|
|
53
54
|
) -> dict[str, int]:
|
|
54
55
|
"""Install Claude Code MAP files into target project."""
|
|
55
56
|
servers = mcp_servers or []
|
|
57
|
+
# Statusline wiring is a Claude-only resource decision and stays inside
|
|
58
|
+
# this provider so it never leaks into the Codex install path. It is
|
|
59
|
+
# non-destructive: skips when the user already configured a statusLine.
|
|
60
|
+
statusline = ensure_map_statusline(project_path)
|
|
56
61
|
return {
|
|
57
62
|
"agents": create_agent_files(project_path, servers),
|
|
58
63
|
"commands": create_command_files(project_path),
|
|
@@ -62,6 +67,7 @@ class ClaudeProvider(BaseProvider):
|
|
|
62
67
|
"hooks": create_hook_files(project_path),
|
|
63
68
|
"configs": create_config_files(project_path),
|
|
64
69
|
"rules": create_rules_dir(project_path),
|
|
70
|
+
"statusline": 1 if statusline.wired else 0,
|
|
65
71
|
}
|
|
66
72
|
|
|
67
73
|
|
|
@@ -83,6 +89,10 @@ class CodexProvider(BaseProvider):
|
|
|
83
89
|
Returns:
|
|
84
90
|
Mapping of category name to number of files created.
|
|
85
91
|
"""
|
|
92
|
+
# Codex configures agents via TOML, not MCP JSON: the interface
|
|
93
|
+
# parameter is accepted for BaseProvider conformance but intentionally
|
|
94
|
+
# unused. `del` documents that and satisfies reportUnusedParameter.
|
|
95
|
+
del mcp_servers
|
|
86
96
|
# Deferred to avoid circular import (codex_copier imports from file_copier)
|
|
87
97
|
from mapify_cli.delivery.codex_copier import create_codex_files
|
|
88
98
|
|