mapify-cli 3.11.0__tar.gz → 3.12.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.11.0 → mapify_cli-3.12.0}/PKG-INFO +1 -1
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/pyproject.toml +1 -1
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/__init__.py +95 -101
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_mapify_cli.py +145 -38
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/.claude/hooks/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/.gitignore +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/config/project_config.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/schemas.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/actor.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/synthesizer.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/hook-patterns.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/settings.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/settings.json.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/conftest.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/hooks/test_hook_inventory_smoke.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_map_step_runner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.11.0 → mapify_cli-3.12.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.12.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.12.0"
|
|
27
27
|
|
|
28
28
|
import os
|
|
29
29
|
import subprocess
|
|
@@ -70,12 +70,12 @@ from mapify_cli.delivery import (
|
|
|
70
70
|
create_evaluator_content as create_evaluator_content,
|
|
71
71
|
create_reflector_content as create_reflector_content,
|
|
72
72
|
create_documentation_reviewer_content as create_documentation_reviewer_content,
|
|
73
|
-
create_agent_files,
|
|
74
|
-
create_reference_files,
|
|
75
|
-
create_command_files,
|
|
76
|
-
create_skill_files,
|
|
77
|
-
create_hook_files,
|
|
78
|
-
create_config_files,
|
|
73
|
+
create_agent_files as create_agent_files,
|
|
74
|
+
create_reference_files as create_reference_files,
|
|
75
|
+
create_command_files as create_command_files,
|
|
76
|
+
create_skill_files as create_skill_files,
|
|
77
|
+
create_hook_files as create_hook_files,
|
|
78
|
+
create_config_files as create_config_files,
|
|
79
79
|
create_commands_dir as create_commands_dir,
|
|
80
80
|
)
|
|
81
81
|
from mapify_cli.config import (
|
|
@@ -1259,32 +1259,62 @@ def doctor(debug: bool = typer.Option(False, "--debug", help="Enable debug loggi
|
|
|
1259
1259
|
console.print(f" • {path_name}")
|
|
1260
1260
|
|
|
1261
1261
|
|
|
1262
|
+
def _mapify_install_kind() -> str:
|
|
1263
|
+
"""Classify how this mapify CLI is installed.
|
|
1264
|
+
|
|
1265
|
+
Returns one of:
|
|
1266
|
+
- ``"uv-tool"``: installed via ``uv tool install`` (self-upgradeable with uv)
|
|
1267
|
+
- ``"pip"``: installed into a regular/virtualenv site-packages (pip -U)
|
|
1268
|
+
- ``"source"``: running from a source checkout / editable install
|
|
1269
|
+
(self-upgrade disabled — the user owns the tree)
|
|
1270
|
+
"""
|
|
1271
|
+
pkg = str(Path(__file__).resolve()).replace("\\", "/")
|
|
1272
|
+
if "/uv/tools/" in pkg:
|
|
1273
|
+
return "uv-tool"
|
|
1274
|
+
if "/site-packages/" in pkg or "/dist-packages/" in pkg:
|
|
1275
|
+
return "pip"
|
|
1276
|
+
return "source"
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
def _self_upgrade_command(kind: str) -> Optional[List[str]]:
|
|
1280
|
+
"""Return the argv that upgrades mapify-cli for ``kind``, or None if unknown."""
|
|
1281
|
+
if kind == "uv-tool":
|
|
1282
|
+
uv = shutil.which("uv")
|
|
1283
|
+
return [uv, "tool", "upgrade", "mapify-cli"] if uv else None
|
|
1284
|
+
if kind == "pip":
|
|
1285
|
+
return [sys.executable, "-m", "pip", "install", "--upgrade", "mapify-cli"]
|
|
1286
|
+
return None
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
def _run_self_upgrade(cmd: List[str]) -> int:
|
|
1290
|
+
"""Run the self-upgrade command, streaming its output. Returns the exit code.
|
|
1291
|
+
|
|
1292
|
+
Returns ``127`` when the executable is not found. Isolated into its own
|
|
1293
|
+
function so tests can stub the subprocess invocation without patching the
|
|
1294
|
+
module-level ``subprocess`` used by many other commands.
|
|
1295
|
+
"""
|
|
1296
|
+
try:
|
|
1297
|
+
return subprocess.run(cmd, check=False).returncode
|
|
1298
|
+
except FileNotFoundError:
|
|
1299
|
+
return 127
|
|
1300
|
+
|
|
1301
|
+
|
|
1262
1302
|
@app.command()
|
|
1263
1303
|
def upgrade():
|
|
1264
|
-
"""Upgrade
|
|
1265
|
-
show_banner()
|
|
1266
|
-
project_path = Path.cwd()
|
|
1267
|
-
|
|
1268
|
-
if not is_map_initialized(project_path):
|
|
1269
|
-
console.print(
|
|
1270
|
-
"[yellow]MAP Framework not initialized in this directory.[/yellow]"
|
|
1271
|
-
)
|
|
1272
|
-
console.print("Run: [cyan]mapify init .[/cyan]")
|
|
1273
|
-
raise typer.Exit(0)
|
|
1304
|
+
"""Upgrade the mapify CLI itself to the latest released version.
|
|
1274
1305
|
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
raise typer.Exit(0)
|
|
1306
|
+
This refreshes the installed ``mapify-cli`` package (the tool), not the
|
|
1307
|
+
files inside a project. After upgrading, run ``mapify init . --force`` to
|
|
1308
|
+
refresh a project's shipped MAP files with the new templates.
|
|
1309
|
+
"""
|
|
1310
|
+
show_banner()
|
|
1281
1311
|
|
|
1282
|
-
console.print("[cyan]Checking for
|
|
1312
|
+
console.print("[cyan]Checking for the latest release...[/cyan]")
|
|
1283
1313
|
latest_release = get_latest_release("azalio", "map-framework")
|
|
1284
|
-
latest_version = None
|
|
1314
|
+
latest_version: Optional[str] = None
|
|
1285
1315
|
|
|
1286
1316
|
if latest_release and latest_release.get("tag_name"):
|
|
1287
|
-
latest_version = latest_release["tag_name"].lstrip("v")
|
|
1317
|
+
latest_version = str(latest_release["tag_name"]).lstrip("v")
|
|
1288
1318
|
if parse_version(latest_version) > parse_version(__version__):
|
|
1289
1319
|
console.print(
|
|
1290
1320
|
f"[yellow]New version available:[/yellow] {latest_version} "
|
|
@@ -1294,97 +1324,61 @@ def upgrade():
|
|
|
1294
1324
|
console.print(f"Release: [cyan]{latest_release['html_url']}[/cyan]")
|
|
1295
1325
|
else:
|
|
1296
1326
|
console.print(
|
|
1297
|
-
f"[green]
|
|
1327
|
+
f"[green]Already on the latest release ({__version__}).[/green]"
|
|
1298
1328
|
)
|
|
1329
|
+
console.print("[dim]Nothing to upgrade.[/dim]")
|
|
1330
|
+
raise typer.Exit(0)
|
|
1299
1331
|
else:
|
|
1300
1332
|
console.print(
|
|
1301
|
-
"[dim]Could not fetch release metadata;
|
|
1333
|
+
"[dim]Could not fetch release metadata; attempting upgrade anyway.[/dim]"
|
|
1302
1334
|
)
|
|
1303
1335
|
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
# Track drift across all file types
|
|
1307
|
-
from mapify_cli.delivery.managed_file_copier import DriftReport
|
|
1308
|
-
|
|
1309
|
-
drift_report = DriftReport()
|
|
1336
|
+
kind = _mapify_install_kind()
|
|
1310
1337
|
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
tracker.start("commands")
|
|
1323
|
-
command_count = create_command_files(project_path, drift_report)
|
|
1324
|
-
tracker.complete("commands", f"{command_count} files")
|
|
1325
|
-
|
|
1326
|
-
tracker.add("skills", "Refresh skills")
|
|
1327
|
-
tracker.start("skills")
|
|
1328
|
-
skill_count = create_skill_files(project_path)
|
|
1329
|
-
tracker.complete("skills", f"{skill_count} folders")
|
|
1330
|
-
|
|
1331
|
-
tracker.add("references", "Refresh reference files")
|
|
1332
|
-
tracker.start("references")
|
|
1333
|
-
ref_count = create_reference_files(project_path, drift_report)
|
|
1334
|
-
tracker.complete("references", f"{ref_count} files")
|
|
1335
|
-
|
|
1336
|
-
tracker.add("hooks", "Refresh shared hooks")
|
|
1337
|
-
tracker.start("hooks")
|
|
1338
|
-
hook_count = create_hook_files(project_path, drift_report)
|
|
1339
|
-
tracker.complete("hooks", f"{hook_count} files")
|
|
1340
|
-
|
|
1341
|
-
tracker.add("configs", "Refresh config files")
|
|
1342
|
-
tracker.start("configs")
|
|
1343
|
-
config_count = create_config_files(project_path, drift_report)
|
|
1344
|
-
tracker.complete("configs", f"{config_count} files")
|
|
1345
|
-
|
|
1346
|
-
tracker.add("permissions", "Merge local approvals")
|
|
1347
|
-
tracker.start("permissions")
|
|
1348
|
-
create_or_merge_project_settings_local(project_path)
|
|
1349
|
-
tracker.complete("permissions", "settings.local.json updated")
|
|
1338
|
+
if kind == "source":
|
|
1339
|
+
source_root = Path(__file__).resolve().parents[2]
|
|
1340
|
+
console.print(
|
|
1341
|
+
"[yellow]Running from a source checkout — self-upgrade is disabled.[/yellow]"
|
|
1342
|
+
)
|
|
1343
|
+
console.print(f"[dim]Source: {source_root}[/dim]")
|
|
1344
|
+
console.print(
|
|
1345
|
+
"[dim]Update with [cyan]git pull[/cyan] "
|
|
1346
|
+
"(then re-install the tool if needed).[/dim]"
|
|
1347
|
+
)
|
|
1348
|
+
raise typer.Exit(0)
|
|
1350
1349
|
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1350
|
+
cmd = _self_upgrade_command(kind)
|
|
1351
|
+
if cmd is None:
|
|
1352
|
+
console.print(
|
|
1353
|
+
"[red]Could not determine how to upgrade mapify automatically.[/red]"
|
|
1354
|
+
)
|
|
1355
|
+
console.print(
|
|
1356
|
+
"Upgrade manually: [cyan]uv tool upgrade mapify-cli[/cyan] "
|
|
1357
|
+
"or [cyan]pip install --upgrade mapify-cli[/cyan]"
|
|
1358
|
+
)
|
|
1359
|
+
raise typer.Exit(1)
|
|
1356
1360
|
|
|
1357
1361
|
console.print()
|
|
1358
|
-
console.print(
|
|
1362
|
+
console.print(f"[cyan]Upgrading mapify-cli...[/cyan] [dim]({' '.join(cmd)})[/dim]")
|
|
1363
|
+
exit_code = _run_self_upgrade(cmd)
|
|
1359
1364
|
|
|
1360
|
-
|
|
1361
|
-
if drift_report.has_drift:
|
|
1365
|
+
if exit_code != 0:
|
|
1362
1366
|
console.print()
|
|
1363
1367
|
console.print(
|
|
1364
|
-
f"[
|
|
1365
|
-
)
|
|
1366
|
-
for r in drift_report.drifted_files:
|
|
1367
|
-
try:
|
|
1368
|
-
rel = r.dest.relative_to(project_path)
|
|
1369
|
-
except ValueError:
|
|
1370
|
-
rel = r.dest
|
|
1371
|
-
backup_note = ""
|
|
1372
|
-
if r.backed_up and r.backup_path:
|
|
1373
|
-
try:
|
|
1374
|
-
backup_rel = r.backup_path.relative_to(project_path)
|
|
1375
|
-
except ValueError:
|
|
1376
|
-
backup_rel = r.backup_path
|
|
1377
|
-
backup_note = f" → backup: [cyan]{backup_rel}[/cyan]"
|
|
1378
|
-
console.print(f" [yellow]•[/yellow] {rel}{backup_note}")
|
|
1379
|
-
console.print(
|
|
1380
|
-
"[dim]Your changes were backed up to .bak files. "
|
|
1381
|
-
"Review and re-apply any customizations if needed.[/dim]"
|
|
1368
|
+
f"[red]Upgrade command failed (exit {exit_code}).[/red] Run it manually:"
|
|
1382
1369
|
)
|
|
1370
|
+
console.print(f" [cyan]{' '.join(cmd)}[/cyan]")
|
|
1371
|
+
raise typer.Exit(1)
|
|
1383
1372
|
|
|
1373
|
+
target = latest_version or "the latest release"
|
|
1384
1374
|
console.print()
|
|
1385
|
-
console.print("[bold green]Upgrade complete.[/bold green]")
|
|
1386
1375
|
console.print(
|
|
1387
|
-
"[
|
|
1376
|
+
f"[bold green]mapify upgraded[/bold green] (was {__version__}, now {target})."
|
|
1377
|
+
)
|
|
1378
|
+
console.print("[dim]Confirm with [cyan]mapify --version[/cyan].[/dim]")
|
|
1379
|
+
console.print(
|
|
1380
|
+
"[dim]To refresh this project's MAP files with the new templates, run "
|
|
1381
|
+
"[cyan]mapify init . --force[/cyan].[/dim]"
|
|
1388
1382
|
)
|
|
1389
1383
|
|
|
1390
1384
|
|
|
@@ -14,6 +14,7 @@ from typer.testing import CliRunner
|
|
|
14
14
|
# Add src directory to path for imports
|
|
15
15
|
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
|
16
16
|
|
|
17
|
+
import mapify_cli
|
|
17
18
|
from mapify_cli.delivery import create_map_tools
|
|
18
19
|
from mapify_cli import (
|
|
19
20
|
app,
|
|
@@ -703,17 +704,19 @@ class TestDoctorCommand:
|
|
|
703
704
|
class TestUpgradeCommand:
|
|
704
705
|
"""Test the upgrade command."""
|
|
705
706
|
|
|
707
|
+
@mock.patch("mapify_cli._run_self_upgrade", return_value=0)
|
|
708
|
+
@mock.patch(
|
|
709
|
+
"mapify_cli._self_upgrade_command",
|
|
710
|
+
return_value=["uv", "tool", "upgrade", "mapify-cli"],
|
|
711
|
+
)
|
|
712
|
+
@mock.patch("mapify_cli._mapify_install_kind", return_value="uv-tool")
|
|
706
713
|
@mock.patch("mapify_cli.get_latest_release")
|
|
707
|
-
def
|
|
708
|
-
|
|
714
|
+
def test_upgrade_self_upgrades_when_newer(
|
|
715
|
+
self, mock_get_latest, _mock_kind, _mock_cmd, mock_run, tmp_path
|
|
716
|
+
):
|
|
717
|
+
"""A newer release self-upgrades the mapify CLI and writes no project files."""
|
|
718
|
+
del _mock_kind, _mock_cmd
|
|
709
719
|
os.chdir(tmp_path)
|
|
710
|
-
init_result = runner.invoke(app, ["init", ".", "--no-git", "--mcp", "none"])
|
|
711
|
-
assert init_result.exit_code == 0
|
|
712
|
-
|
|
713
|
-
actor_file = tmp_path / ".claude" / "agents" / "actor.md"
|
|
714
|
-
original_content = actor_file.read_text()
|
|
715
|
-
actor_file.write_text("stale content\n")
|
|
716
|
-
|
|
717
720
|
mock_get_latest.return_value = {
|
|
718
721
|
"tag_name": "v9.9.9",
|
|
719
722
|
"html_url": "https://github.com/azalio/map-framework/releases/tag/v9.9.9",
|
|
@@ -721,43 +724,144 @@ class TestUpgradeCommand:
|
|
|
721
724
|
|
|
722
725
|
result = runner.invoke(app, ["upgrade"])
|
|
723
726
|
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
727
|
+
# Rich may hard-wrap output to terminal width; normalize whitespace
|
|
728
|
+
# before substring checks so wrapped lines still match.
|
|
729
|
+
normalized = " ".join(result.stdout.split())
|
|
730
|
+
assert result.exit_code == 0, result.stdout
|
|
731
|
+
assert "New version available" in normalized
|
|
732
|
+
assert "mapify upgraded" in normalized
|
|
733
|
+
# Directs users at the project-file refresh path
|
|
734
|
+
assert "mapify init . --force" in normalized
|
|
735
|
+
# Shelled out to the self-upgrade command exactly once
|
|
736
|
+
mock_run.assert_called_once_with(["uv", "tool", "upgrade", "mapify-cli"])
|
|
737
|
+
# upgrade no longer creates any project files
|
|
738
|
+
assert not (tmp_path / ".claude").exists()
|
|
739
|
+
|
|
740
|
+
@mock.patch("mapify_cli._run_self_upgrade")
|
|
741
|
+
@mock.patch("mapify_cli.get_latest_release")
|
|
742
|
+
def test_upgrade_already_latest_does_nothing(
|
|
743
|
+
self, mock_get_latest, mock_run, tmp_path
|
|
744
|
+
):
|
|
745
|
+
"""When already on the latest release, no upgrade command runs."""
|
|
746
|
+
os.chdir(tmp_path)
|
|
747
|
+
mock_get_latest.return_value = {
|
|
748
|
+
"tag_name": "v0.0.1",
|
|
749
|
+
"html_url": "https://github.com/azalio/map-framework/releases/tag/v0.0.1",
|
|
750
|
+
}
|
|
729
751
|
|
|
730
|
-
|
|
731
|
-
return re.sub(r"<!-- MAP-MANAGED:.*?-->\n?", "", text)
|
|
752
|
+
result = runner.invoke(app, ["upgrade"])
|
|
732
753
|
|
|
733
|
-
assert
|
|
734
|
-
|
|
735
|
-
|
|
754
|
+
assert result.exit_code == 0
|
|
755
|
+
assert "Already on the latest release" in result.stdout
|
|
756
|
+
assert "Nothing to upgrade" in result.stdout
|
|
757
|
+
mock_run.assert_not_called()
|
|
736
758
|
|
|
759
|
+
@mock.patch("mapify_cli._run_self_upgrade")
|
|
760
|
+
@mock.patch("mapify_cli._mapify_install_kind", return_value="source")
|
|
737
761
|
@mock.patch("mapify_cli.get_latest_release")
|
|
738
|
-
def
|
|
739
|
-
|
|
762
|
+
def test_upgrade_source_checkout_disabled(
|
|
763
|
+
self, mock_get_latest, _mock_kind, mock_run, tmp_path
|
|
764
|
+
):
|
|
765
|
+
"""A source checkout disables self-upgrade and runs no command."""
|
|
766
|
+
del _mock_kind
|
|
740
767
|
os.chdir(tmp_path)
|
|
741
|
-
|
|
742
|
-
assert init_result.exit_code == 0
|
|
743
|
-
mock_get_latest.return_value = {
|
|
744
|
-
"tag_name": "v3.5.0",
|
|
745
|
-
"html_url": "https://github.com/azalio/map-framework/releases/tag/v3.5.0",
|
|
746
|
-
}
|
|
768
|
+
mock_get_latest.return_value = {"tag_name": "v9.9.9"}
|
|
747
769
|
|
|
748
770
|
result = runner.invoke(app, ["upgrade"])
|
|
749
771
|
|
|
750
772
|
assert result.exit_code == 0
|
|
751
|
-
assert "
|
|
752
|
-
|
|
773
|
+
assert "self-upgrade is disabled" in result.stdout
|
|
774
|
+
mock_run.assert_not_called()
|
|
753
775
|
|
|
754
|
-
|
|
755
|
-
|
|
776
|
+
@mock.patch("mapify_cli._run_self_upgrade", return_value=1)
|
|
777
|
+
@mock.patch(
|
|
778
|
+
"mapify_cli._self_upgrade_command",
|
|
779
|
+
return_value=["uv", "tool", "upgrade", "mapify-cli"],
|
|
780
|
+
)
|
|
781
|
+
@mock.patch("mapify_cli._mapify_install_kind", return_value="uv-tool")
|
|
782
|
+
@mock.patch("mapify_cli.get_latest_release")
|
|
783
|
+
def test_upgrade_command_failure_exits_nonzero(
|
|
784
|
+
self, mock_get_latest, _mock_kind, _mock_cmd, _mock_run, tmp_path
|
|
785
|
+
):
|
|
786
|
+
"""A failing upgrade command surfaces a nonzero exit and a manual hint."""
|
|
787
|
+
del _mock_kind, _mock_cmd, _mock_run
|
|
788
|
+
os.chdir(tmp_path)
|
|
789
|
+
mock_get_latest.return_value = {"tag_name": "v9.9.9"}
|
|
790
|
+
|
|
791
|
+
result = runner.invoke(app, ["upgrade"])
|
|
792
|
+
|
|
793
|
+
assert result.exit_code == 1
|
|
794
|
+
assert "Upgrade command failed" in result.stdout
|
|
795
|
+
|
|
796
|
+
@mock.patch("mapify_cli.get_latest_release", return_value=None)
|
|
797
|
+
def test_upgrade_no_release_metadata_attempts_anyway(
|
|
798
|
+
self, _mock_get_latest, tmp_path
|
|
799
|
+
):
|
|
800
|
+
"""No release metadata: upgrade still proceeds past the version gate."""
|
|
801
|
+
del _mock_get_latest
|
|
756
802
|
os.chdir(tmp_path)
|
|
757
803
|
result = runner.invoke(app, ["upgrade"])
|
|
758
804
|
|
|
805
|
+
# In the pytest runtime mapify resolves to a source checkout, so the
|
|
806
|
+
# self-upgrade path short-circuits cleanly instead of shelling out.
|
|
807
|
+
normalized = " ".join(result.stdout.split())
|
|
759
808
|
assert result.exit_code == 0
|
|
760
|
-
assert "
|
|
809
|
+
assert "Could not fetch release metadata" in normalized
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
class TestSelfUpgradeHelpers:
|
|
813
|
+
"""Unit tests for install-kind detection and the upgrade-command builder."""
|
|
814
|
+
|
|
815
|
+
def test_install_kind_uv_tool(self, monkeypatch):
|
|
816
|
+
monkeypatch.setattr(
|
|
817
|
+
mapify_cli,
|
|
818
|
+
"__file__",
|
|
819
|
+
"/home/u/.local/share/uv/tools/mapify-cli/lib/"
|
|
820
|
+
"python3.11/site-packages/mapify_cli/__init__.py",
|
|
821
|
+
)
|
|
822
|
+
assert mapify_cli._mapify_install_kind() == "uv-tool"
|
|
823
|
+
|
|
824
|
+
def test_install_kind_pip(self, monkeypatch):
|
|
825
|
+
monkeypatch.setattr(
|
|
826
|
+
mapify_cli,
|
|
827
|
+
"__file__",
|
|
828
|
+
"/home/u/.venv/lib/python3.11/site-packages/mapify_cli/__init__.py",
|
|
829
|
+
)
|
|
830
|
+
assert mapify_cli._mapify_install_kind() == "pip"
|
|
831
|
+
|
|
832
|
+
def test_install_kind_source(self, monkeypatch):
|
|
833
|
+
monkeypatch.setattr(
|
|
834
|
+
mapify_cli,
|
|
835
|
+
"__file__",
|
|
836
|
+
"/home/u/gitroot/map-framework/src/mapify_cli/__init__.py",
|
|
837
|
+
)
|
|
838
|
+
assert mapify_cli._mapify_install_kind() == "source"
|
|
839
|
+
|
|
840
|
+
def test_self_upgrade_command_uv_tool(self, monkeypatch):
|
|
841
|
+
monkeypatch.setattr(mapify_cli.shutil, "which", lambda *_: "/usr/bin/uv")
|
|
842
|
+
assert mapify_cli._self_upgrade_command("uv-tool") == [
|
|
843
|
+
"/usr/bin/uv",
|
|
844
|
+
"tool",
|
|
845
|
+
"upgrade",
|
|
846
|
+
"mapify-cli",
|
|
847
|
+
]
|
|
848
|
+
|
|
849
|
+
def test_self_upgrade_command_uv_tool_missing_uv(self, monkeypatch):
|
|
850
|
+
monkeypatch.setattr(mapify_cli.shutil, "which", lambda *_: None)
|
|
851
|
+
assert mapify_cli._self_upgrade_command("uv-tool") is None
|
|
852
|
+
|
|
853
|
+
def test_self_upgrade_command_pip(self):
|
|
854
|
+
assert mapify_cli._self_upgrade_command("pip") == [
|
|
855
|
+
sys.executable,
|
|
856
|
+
"-m",
|
|
857
|
+
"pip",
|
|
858
|
+
"install",
|
|
859
|
+
"--upgrade",
|
|
860
|
+
"mapify-cli",
|
|
861
|
+
]
|
|
862
|
+
|
|
863
|
+
def test_self_upgrade_command_source_is_none(self):
|
|
864
|
+
assert mapify_cli._self_upgrade_command("source") is None
|
|
761
865
|
|
|
762
866
|
|
|
763
867
|
class TestAgentCreation:
|
|
@@ -1721,18 +1825,21 @@ class TestCodexProvider:
|
|
|
1721
1825
|
# AC-21: upgrade on codex project must not create .claude/ #
|
|
1722
1826
|
# ------------------------------------------------------------------ #
|
|
1723
1827
|
|
|
1724
|
-
|
|
1725
|
-
|
|
1828
|
+
@mock.patch("mapify_cli.get_latest_release")
|
|
1829
|
+
def test_ac21_upgrade_codex_project_no_claude(self, mock_get_latest, codex_project):
|
|
1830
|
+
"""AC-21: 'mapify upgrade' upgrades the CLI only and creates no project files.
|
|
1831
|
+
|
|
1832
|
+
upgrade is now provider-agnostic and never writes into the project, so a
|
|
1833
|
+
codex project stays codex-only — no .claude/ is ever created.
|
|
1834
|
+
"""
|
|
1835
|
+
mock_get_latest.return_value = {"tag_name": "v9.9.9"}
|
|
1726
1836
|
local_runner = CliRunner()
|
|
1727
1837
|
os.chdir(codex_project)
|
|
1728
1838
|
result = local_runner.invoke(app, ["upgrade"])
|
|
1729
1839
|
assert result.exit_code == 0, f"upgrade failed: {result.output}"
|
|
1730
1840
|
assert not (
|
|
1731
1841
|
codex_project / ".claude"
|
|
1732
|
-
).exists(), ".claude/ must NOT be created
|
|
1733
|
-
assert (
|
|
1734
|
-
"mapify init . --provider codex --force" in result.output
|
|
1735
|
-
), "upgrade must tell codex users to re-run init with --provider codex"
|
|
1842
|
+
).exists(), ".claude/ must NOT be created by upgrade on a codex project"
|
|
1736
1843
|
|
|
1737
1844
|
def test_ac22_map_efficient_state_machine_markers(self, codex_project):
|
|
1738
1845
|
"""AC-22: $map-efficient documents the required state-machine commands."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/documentation-reviewer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/decomposer.toml
RENAMED
|
File without changes
|
|
File without changes
|
{mapify_cli-3.11.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/researcher.toml
RENAMED
|
File without changes
|
|
File without changes
|