mapify-cli 3.10.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.10.0 → mapify_cli-3.12.0}/.claude/hooks/README.md +30 -13
- {mapify_cli-3.10.0/src/mapify_cli/templates → mapify_cli-3.12.0/.claude}/skills/README.md +2 -2
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/.gitignore +19 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/PKG-INFO +42 -8
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/README.md +35 -7
- mapify_cli-3.12.0/pyproject.toml +124 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/__init__.py +492 -109
- mapify_cli-3.12.0/src/mapify_cli/_locking.py +303 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/config/project_config.py +76 -8
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/codex_copier.py +100 -26
- mapify_cli-3.12.0/src/mapify_cli/delivery/file_copier.py +655 -0
- mapify_cli-3.12.0/src/mapify_cli/delivery/managed_file_copier.py +1086 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/providers.py +1 -1
- mapify_cli-3.12.0/src/mapify_cli/delivery/template_renderer.py +776 -0
- mapify_cli-3.12.0/src/mapify_cli/memory/__init__.py +6 -0
- mapify_cli-3.12.0/src/mapify_cli/memory/capture.py +534 -0
- mapify_cli-3.12.0/src/mapify_cli/memory/digest_schema.py +179 -0
- mapify_cli-3.12.0/src/mapify_cli/memory/finalize.py +620 -0
- mapify_cli-3.12.0/src/mapify_cli/memory/recall.py +367 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/repo_insight.py +2 -2
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/schemas.py +191 -2
- mapify_cli-3.12.0/src/mapify_cli/skill_ir.py +416 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/__init__.py +57 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/aggregator.py +300 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/apply_patcher.py +226 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/assertions.py +284 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/description_optimizer.py +486 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/dispatcher.py +751 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/eval_schema.py +313 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/proposer.py +153 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/runner.py +425 -0
- mapify_cli-3.12.0/src/mapify_cli/skills_eval/viewer.py +224 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/.gitignore +5 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/CLAUDE.md +12 -13
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/actor.md +32 -249
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +2 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/evaluator.md +6 -2
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/final-verifier.md +22 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/monitor.md +63 -6
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/predictor.md +5 -419
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/reflector.md +0 -140
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/synthesizer.md +0 -95
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/task-decomposer.md +92 -152
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/AGENTS.md +13 -2
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +4 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/monitor.toml +1 -1
- mapify_cli-3.12.0/src/mapify_cli/templates/codex/hooks/workflow-gate.py +569 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +258 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +117 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +7 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +40 -10
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/README.md +30 -13
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/context-meter.py +2 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +3 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +11 -2
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/map-memory-capture.py +39 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/map-memory-endmark.py +39 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/map-memory-finalize.py +49 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/map-memory-recall.py +47 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/map-token-meter.py +131 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/post-compact-context.py +266 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +2 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +2 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +2 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +6 -1
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/workflow-context-injector.py +844 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/hooks/workflow-gate.py +569 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +1665 -39
- mapify_cli-3.12.0/src/mapify_cli/templates/map/scripts/map_step_runner.py +9972 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/map/scripts/sofa_client.py +627 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +250 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/references/hook-patterns.md +161 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/references/host-paths.md +66 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +64 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/settings.json +81 -0
- {mapify_cli-3.10.0/.claude → mapify_cli-3.12.0/src/mapify_cli/templates}/skills/README.md +2 -2
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-check/SKILL.md +311 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-check/check-reference.md +70 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +57 -18
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-efficient/SKILL.md +501 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +259 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +12 -1
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +36 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +130 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-plan/SKILL.md +367 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-plan/plan-reference.md +104 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +7 -204
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-resume/resume-reference.md +218 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-review/SKILL.md +466 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-review/review-reference.md +43 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +168 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-so-search/SKILL.md +126 -0
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +540 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +56 -13
- mapify_cli-3.12.0/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +116 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/skill-rules.json +82 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/.gitignore.jinja +5 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/CLAUDE.md.jinja +79 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/actor.md.jinja +846 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/debate-arbiter.md.jinja +953 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +704 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/evaluator.md.jinja +1476 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +221 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/monitor.md.jinja +2615 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/predictor.md.jinja +1586 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/reflector.md.jinja +703 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/research-agent.md.jinja +281 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/synthesizer.md.jinja +1066 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +931 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +49 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +877 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +1144 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +74 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/config.toml.jinja +17 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +569 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/hooks.json.jinja +16 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +21 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +258 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +117 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +166 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +29 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +659 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/README.md.jinja +118 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +156 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +188 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +196 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +39 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +39 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +49 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +47 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +131 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +266 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +198 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +265 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +402 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +191 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +844 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +569 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +346 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +3803 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +9972 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +43 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +627 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +250 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +81 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +109 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +91 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +79 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +44 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +87 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +33 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +260 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +295 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +55 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +161 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/host-paths.md.jinja +66 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +82 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +74 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +64 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +113 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +66 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +5 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/rules/learned/README.md.jinja +18 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/settings.json.jinja +255 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/README.md.jinja +82 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +311 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +70 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +361 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +501 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +259 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +147 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +186 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +403 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +19 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +5 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +10 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +130 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +367 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +104 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +1275 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +307 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +218 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +466 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +43 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +168 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +126 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +540 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +228 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +68 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +40 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +77 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +62 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +62 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +93 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +75 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +70 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +302 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +386 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +116 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +364 -0
- mapify_cli-3.12.0/src/mapify_cli/templates_src/workflow-rules.json.jinja +105 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/token_budget.py +46 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/verification_recorder.py +8 -5
- mapify_cli-3.12.0/tests/__init__.py +1 -0
- mapify_cli-3.12.0/tests/conftest.py +51 -0
- mapify_cli-3.12.0/tests/fixtures/claude/escalation-matrix.md +55 -0
- mapify_cli-3.12.0/tests/fixtures/codex/config.toml +17 -0
- mapify_cli-3.12.0/tests/hooks/test_detect_clarification_triggers.py +211 -0
- mapify_cli-3.12.0/tests/hooks/test_end_of_turn.py +331 -0
- mapify_cli-3.12.0/tests/hooks/test_hook_inventory_smoke.py +458 -0
- mapify_cli-3.12.0/tests/hooks/test_safety_guardrails.py +415 -0
- mapify_cli-3.12.0/tests/integration/__init__.py +1 -0
- mapify_cli-3.12.0/tests/integration/fixtures/blueprint.json +63 -0
- mapify_cli-3.12.0/tests/integration/fixtures/code_review.md +30 -0
- mapify_cli-3.12.0/tests/integration/fixtures/plan_handoff.json +24 -0
- mapify_cli-3.12.0/tests/integration/fixtures/spec.md +23 -0
- mapify_cli-3.12.0/tests/integration/fixtures/step_state_initialized.json +27 -0
- mapify_cli-3.12.0/tests/integration/fixtures/step_state_plan_complete.json +32 -0
- mapify_cli-3.12.0/tests/integration/fixtures/task_plan.md +42 -0
- mapify_cli-3.12.0/tests/integration/fixtures/verification_summary.md +18 -0
- mapify_cli-3.12.0/tests/integration/test_e2e_artifact_contracts.py +814 -0
- mapify_cli-3.12.0/tests/integration/test_e2e_claude_sdk.py +1118 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/README.md +66 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_debug_eval_set.json +23 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +65 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +55 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +55 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +18 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +18 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +16 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +15 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +64 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +15 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +14 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +14 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +20 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +59 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +15 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +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.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +14 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +20 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +17 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +18 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +16 -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.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +8 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +10 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +14 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +16 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +19 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +17 -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.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +8 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +19 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +16 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +22 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +12 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +16 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +85 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +55 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +15 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +17 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +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.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +21 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +55 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +15 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +19 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +14 -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.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +13 -0
- mapify_cli-3.12.0/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +21 -0
- mapify_cli-3.12.0/tests/skills_eval/whole_skill/spike_runner.py +624 -0
- mapify_cli-3.12.0/tests/test_agent_cli_correctness.py +92 -0
- mapify_cli-3.12.0/tests/test_agent_frontmatter.py +212 -0
- mapify_cli-3.12.0/tests/test_artifact_schemas.py +499 -0
- mapify_cli-3.12.0/tests/test_decomposition.py +960 -0
- mapify_cli-3.12.0/tests/test_dependency_graph.py +355 -0
- mapify_cli-3.12.0/tests/test_diagnostics.py +124 -0
- mapify_cli-3.12.0/tests/test_digest_schema.py +332 -0
- mapify_cli-3.12.0/tests/test_file_copier.py +436 -0
- mapify_cli-3.12.0/tests/test_hook_patterns.py +233 -0
- mapify_cli-3.12.0/tests/test_init_import_graph.py +255 -0
- mapify_cli-3.12.0/tests/test_intent_detector.py +254 -0
- mapify_cli-3.12.0/tests/test_inv1_no_anthropic_optimize.py +107 -0
- mapify_cli-3.12.0/tests/test_jinja2_dep.py +8 -0
- mapify_cli-3.12.0/tests/test_locking.py +507 -0
- mapify_cli-3.12.0/tests/test_managed_file_copier.py +938 -0
- mapify_cli-3.12.0/tests/test_map_orchestrator.py +3659 -0
- mapify_cli-3.12.0/tests/test_map_step_runner.py +8349 -0
- mapify_cli-3.12.0/tests/test_map_token_meter.py +206 -0
- mapify_cli-3.12.0/tests/test_map_utils_sanitize.py +91 -0
- mapify_cli-3.12.0/tests/test_mapify_cli.py +1962 -0
- mapify_cli-3.12.0/tests/test_memory_capture.py +534 -0
- mapify_cli-3.12.0/tests/test_memory_finalize.py +675 -0
- mapify_cli-3.12.0/tests/test_memory_integration.py +233 -0
- mapify_cli-3.12.0/tests/test_memory_recall.py +557 -0
- mapify_cli-3.12.0/tests/test_memory_review_fixes.py +353 -0
- mapify_cli-3.12.0/tests/test_post_compact_context.py +93 -0
- mapify_cli-3.12.0/tests/test_ralph_hooks.py +342 -0
- mapify_cli-3.12.0/tests/test_ralph_state.py +644 -0
- mapify_cli-3.12.0/tests/test_repo_insight.py +427 -0
- mapify_cli-3.12.0/tests/test_schemas.py +313 -0
- mapify_cli-3.12.0/tests/test_skill_ir.py +210 -0
- mapify_cli-3.12.0/tests/test_skills.py +2337 -0
- mapify_cli-3.12.0/tests/test_skills_consistency.py +793 -0
- mapify_cli-3.12.0/tests/test_skills_eval_aggregator.py +326 -0
- mapify_cli-3.12.0/tests/test_skills_eval_apply.py +428 -0
- mapify_cli-3.12.0/tests/test_skills_eval_cli_optimize.py +633 -0
- mapify_cli-3.12.0/tests/test_skills_eval_dispatcher_env.py +64 -0
- mapify_cli-3.12.0/tests/test_skills_eval_dispatcher_timeout.py +339 -0
- mapify_cli-3.12.0/tests/test_skills_eval_fixtures.py +94 -0
- mapify_cli-3.12.0/tests/test_skills_eval_optimizer.py +604 -0
- mapify_cli-3.12.0/tests/test_skills_eval_optimizer_isolation.py +408 -0
- mapify_cli-3.12.0/tests/test_skills_eval_proposer.py +367 -0
- mapify_cli-3.12.0/tests/test_skills_eval_runner.py +711 -0
- mapify_cli-3.12.0/tests/test_skills_eval_schema.py +210 -0
- mapify_cli-3.12.0/tests/test_skills_eval_viewer.py +397 -0
- mapify_cli-3.12.0/tests/test_sofa_client.py +557 -0
- mapify_cli-3.12.0/tests/test_sofa_search.py +884 -0
- mapify_cli-3.12.0/tests/test_template_render.py +1189 -0
- mapify_cli-3.12.0/tests/test_token_budget.py +285 -0
- mapify_cli-3.12.0/tests/test_validate_dependencies.py +805 -0
- mapify_cli-3.12.0/tests/test_validate_spec_citations.py +189 -0
- mapify_cli-3.12.0/tests/test_verification_recorder.py +611 -0
- mapify_cli-3.12.0/tests/test_workflow_context_injector.py +1130 -0
- mapify_cli-3.12.0/tests/test_workflow_finalizer.py +433 -0
- mapify_cli-3.12.0/tests/test_workflow_gate.py +983 -0
- mapify_cli-3.12.0/tests/test_workflow_logger.py +433 -0
- mapify_cli-3.12.0/tests/test_workflow_state.py +690 -0
- mapify_cli-3.10.0/pyproject.toml +0 -70
- mapify_cli-3.10.0/src/mapify_cli/delivery/file_copier.py +0 -387
- mapify_cli-3.10.0/src/mapify_cli/delivery/managed_file_copier.py +0 -349
- mapify_cli-3.10.0/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -305
- mapify_cli-3.10.0/src/mapify_cli/templates/hooks/post-compact-context.py +0 -110
- mapify_cli-3.10.0/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -446
- mapify_cli-3.10.0/src/mapify_cli/templates/hooks/workflow-gate.py +0 -305
- mapify_cli-3.10.0/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -4799
- mapify_cli-3.10.0/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -622
- mapify_cli-3.10.0/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -900
- mapify_cli-3.10.0/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -877
- mapify_cli-3.10.0/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -688
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/debate-arbiter.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.10.0 → mapify_cli-3.12.0}/src/mapify_cli/workflow_state.py +0 -0
|
@@ -86,16 +86,33 @@ documented per event in the official Claude Code docs.
|
|
|
86
86
|
|
|
87
87
|
## Hook inventory
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
|
98
|
-
|
|
99
|
-
| `
|
|
100
|
-
|
|
101
|
-
|
|
89
|
+
All 15 hooks (14 `.py` + `end-of-turn.sh`) are classified against the
|
|
90
|
+
`MAP_INVOKED_BY` recursion-guard contract. **REQUIRE_GUARD** hooks early-exit
|
|
91
|
+
when MAP spawns a nested subprocess; **FORBID_GUARD** hooks must always fire
|
|
92
|
+
and may not carry the guard. Full contract and per-hook rationale:
|
|
93
|
+
[`../references/hook-patterns.md`](../references/hook-patterns.md). The
|
|
94
|
+
classification is enforced by `scripts/lint-hooks.py` (in `make lint` /
|
|
95
|
+
`make check`).
|
|
96
|
+
|
|
97
|
+
| Hook | Event | Blocking? | Class | Purpose |
|
|
98
|
+
|------|-------|-----------|-------|---------|
|
|
99
|
+
| `safety-guardrails.py` | `PreToolUse` (Edit/Write/Read/MultiEdit/Bash) | Yes (JSON deny) | FORBID_GUARD | Block sensitive files, dangerous commands |
|
|
100
|
+
| `workflow-gate.py` | `PreToolUse` (Edit/Write/MultiEdit) | Yes (JSON deny) | FORBID_GUARD | Enforce Actor+Monitor workflow before edits |
|
|
101
|
+
| `post-compact-context.py` | `SessionStart` (compact) | No | FORBID_GUARD | Inject restore-point context (re-prime after compaction) |
|
|
102
|
+
| `context-meter.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Nudge `/compact <focus>` when the token threshold is crossed |
|
|
103
|
+
| `map-token-meter.py` | `SubagentStop` + `Stop` | No | REQUIRE_GUARD | Attribute per-turn token usage to the active MAP subtask |
|
|
104
|
+
| `workflow-context-injector.py` | `PreToolUse` (Edit/Write/Bash) | No | REQUIRE_GUARD | Inject MAP workflow reminder |
|
|
105
|
+
| `ralph-iteration-logger.py` | `PostToolUse` | No | REQUIRE_GUARD | Log iterations, detect file thrashing |
|
|
106
|
+
| `ralph-context-pruner.py` | `PreCompact` | No | REQUIRE_GUARD | Save restore point, prune logs |
|
|
107
|
+
| `pre-compact-save-transcript.py` | `PreCompact` | No | REQUIRE_GUARD | Save full conversation transcript |
|
|
108
|
+
| `detect-clarification-triggers.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Detect "ask if unclear" + async/durability language |
|
|
109
|
+
| `end-of-turn.sh` | `Stop` | No | REQUIRE_GUARD | Auto-fix lint/format silently |
|
|
110
|
+
| `map-memory-capture.py` | `Stop` | No | REQUIRE_GUARD | Append per-turn scratch WAL record (cross-session memory) |
|
|
111
|
+
| `map-memory-endmark.py` | `SessionEnd` | No | REQUIRE_GUARD | Best-effort 'ended' marker for the session WAL |
|
|
112
|
+
| `map-memory-finalize.py` | `SessionStart` | No | REQUIRE_GUARD | Finalize prior dirty session scratches into digests (claude -p) |
|
|
113
|
+
| `map-memory-recall.py` | `SessionStart` + `UserPromptSubmit` | No | REQUIRE_GUARD | Inject ranked recalled session memory (additionalContext) |
|
|
114
|
+
|
|
115
|
+
> The Codex twin `.codex/hooks/workflow-gate.py` is FORBID_GUARD like its
|
|
116
|
+
> Claude counterpart; this inventory covers `.claude/hooks/` only.
|
|
117
|
+
|
|
118
|
+
Last reviewed: 2026-05-29.
|
|
@@ -63,8 +63,8 @@ The development copy under `.claude/skills/` must stay byte-for-byte synced with
|
|
|
63
63
|
Use:
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
make
|
|
67
|
-
pytest tests/test_skills.py tests/
|
|
66
|
+
make render-templates
|
|
67
|
+
pytest tests/test_skills.py tests/test_template_render.py -v
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
## Troubleshooting
|
|
@@ -49,6 +49,15 @@ coverage.json
|
|
|
49
49
|
!.map/static-analysis/
|
|
50
50
|
!.map/scripts/
|
|
51
51
|
.map/scripts/.map/
|
|
52
|
+
.map/personal/
|
|
53
|
+
# ^ Personal/local learned-rules layer — user-local, never committed or shipped
|
|
54
|
+
# (redundant over .map/* above; kept explicit for intent + defense in depth)
|
|
55
|
+
|
|
56
|
+
# Phase E cross-session memory: scratch WAL is transient (never commit)
|
|
57
|
+
.map/*/sessions/scratch/
|
|
58
|
+
# Digests (.map/*/sessions/*.md) are committed by default. To keep them
|
|
59
|
+
# local, set MAP_MEMORY_COMMIT_DIGESTS=0 and uncomment the next line:
|
|
60
|
+
# .map/*/sessions/
|
|
52
61
|
|
|
53
62
|
# Temporary verification files
|
|
54
63
|
mapify_cli_verification_*.json
|
|
@@ -71,8 +80,18 @@ docs/claude-code-prompt-improver
|
|
|
71
80
|
.mcp.json
|
|
72
81
|
.chunkhound/
|
|
73
82
|
docs/planning-with-files.txt
|
|
83
|
+
docs/map_framework_tech_directors.pptx
|
|
84
|
+
docs/map-demo-real-case-plan.md
|
|
85
|
+
uv.lock
|
|
74
86
|
docs/research/
|
|
75
87
|
docs/superpowers/
|
|
76
88
|
|
|
77
89
|
# Hypothesis test cache
|
|
78
90
|
.hypothesis/
|
|
91
|
+
|
|
92
|
+
# Presentation materials (AIADOPTION-765 demo + tech-directors deck) — local only, never committed
|
|
93
|
+
ai-yc-presetation/
|
|
94
|
+
docs/map-framework-tech-directors-stackland1144-draft.md
|
|
95
|
+
docs/map_framework_tech_directors_stackland1144_map_plan_draft.pptx
|
|
96
|
+
# map:sofa — SOFA credential dir (opt-in); never commit. See docs/USAGE.md
|
|
97
|
+
.sofa/
|
|
@@ -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
|
|
@@ -8,6 +8,7 @@ Project-URL: Issues, https://github.com/azalio/map-framework/issues
|
|
|
8
8
|
Author: MAP Framework Contributors
|
|
9
9
|
Requires-Python: >=3.11
|
|
10
10
|
Requires-Dist: httpx>=0.25.0
|
|
11
|
+
Requires-Dist: jinja2<4,>=3.1
|
|
11
12
|
Requires-Dist: platformdirs>=4.0.0
|
|
12
13
|
Requires-Dist: questionary>=2.0.0
|
|
13
14
|
Requires-Dist: readchar>=4.0.0
|
|
@@ -18,8 +19,11 @@ Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
|
18
19
|
Requires-Dist: hypothesis>=6.0.0; extra == 'dev'
|
|
19
20
|
Requires-Dist: jsonschema>=4.0.0; extra == 'dev'
|
|
20
21
|
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
22
|
+
Requires-Dist: pyright>=1.1.400; extra == 'dev'
|
|
23
|
+
Requires-Dist: pytest-asyncio>=0.26.0; extra == 'dev'
|
|
21
24
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
22
25
|
Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == 'dev'
|
|
23
27
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
24
28
|
Requires-Dist: pyyaml>=6.0.0; extra == 'dev'
|
|
25
29
|
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
@@ -29,8 +33,10 @@ Requires-Dist: truststore>=0.9.0; extra == 'ssl'
|
|
|
29
33
|
Provides-Extra: test
|
|
30
34
|
Requires-Dist: hypothesis>=6.0.0; extra == 'test'
|
|
31
35
|
Requires-Dist: jsonschema>=4.0.0; extra == 'test'
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.26.0; extra == 'test'
|
|
32
37
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
33
38
|
Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
|
|
39
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == 'test'
|
|
34
40
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
35
41
|
Requires-Dist: pyyaml>=6.0.0; extra == 'test'
|
|
36
42
|
Description-Content-Type: text/markdown
|
|
@@ -115,15 +121,34 @@ Then enable the Codex hook manually: run `/hooks`, select `PreToolUse`, press `t
|
|
|
115
121
|
|
|
116
122
|
If your Codex version does not support the `hooks` feature key yet, either start it with `codex --enable codex_hooks` or upgrade Codex first. Upgrading is recommended.
|
|
117
123
|
|
|
118
|
-
Pick a context-compression policy if you want
|
|
119
|
-
(`
|
|
124
|
+
Pick a context-compression policy if you want the `/compact` nudge
|
|
125
|
+
(default is `never` — the nudge is opt-in; see
|
|
126
|
+
[docs/USAGE.md#context-budget-policy](docs/USAGE.md)):
|
|
120
127
|
|
|
121
128
|
```bash
|
|
122
|
-
mapify init . --compression never #
|
|
123
|
-
mapify init . --compression
|
|
124
|
-
mapify init . --compression
|
|
129
|
+
mapify init . --compression never # default — no nudge
|
|
130
|
+
mapify init . --compression auto # nudge at threshold
|
|
131
|
+
mapify init . --compression aggressive # nudge at 0.4 x threshold
|
|
132
|
+
mapify init . --compression-threshold 250000 # Opus 1M / 50+ subtask plans
|
|
125
133
|
```
|
|
126
134
|
|
|
135
|
+
Context-block / review-prompt truncation was removed: Actor and reviewer
|
|
136
|
+
prompts always carry the full bundled context. If the conversation grows
|
|
137
|
+
beyond your model's window, opt into `/compact` via `--compression auto` or
|
|
138
|
+
trigger it manually.
|
|
139
|
+
|
|
140
|
+
Optionally opt into **Stack Overflow for Agents (SOFA)** read-only prior-art
|
|
141
|
+
search — **off by default**, no network or credentials unless you enable it:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
mapify init . --sofa # opt-in: enable the map-so-search skill
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
This writes `sofa.enabled: true` to `.map/config.yaml` and adds `.sofa/` to your
|
|
148
|
+
`.gitignore`. Without the flag, no SOFA code path runs. See the
|
|
149
|
+
[SOFA usage guide](docs/USAGE.md#stack-overflow-for-agents-sofa) for onboarding
|
|
150
|
+
and the untrusted-content boundary.
|
|
151
|
+
|
|
127
152
|
**3. Use the golden path for serious work**
|
|
128
153
|
|
|
129
154
|
When a task has unclear behavior, multiple files, or real review risk, run the full loop:
|
|
@@ -156,12 +181,19 @@ MAP review is useful, but it is not a replacement for engineering judgment. Seri
|
|
|
156
181
|
|
|
157
182
|
- **Daily-driver speed** - optimized for repeated use, not occasional demo workflows.
|
|
158
183
|
- **Low overhead** - structured enough to prevent chaos, lightweight enough to keep token and time cost under control.
|
|
184
|
+
- **Compact high-traffic playbooks** - `/map-plan`, `/map-efficient`, `/map-check`, and `/map-review` keep their active `SKILL.md` bodies focused on the next workflow action, with detailed examples and troubleshooting in bundled supporting files that load only when needed.
|
|
159
185
|
- **Calibrated workflow effort** - each shipped slash skill declares a `thinking_policy` and `parallel_tool_policy`, so lightweight commands stay direct while planning, review, and release workflows reserve deeper reasoning and parallel fan-out for the stages that benefit from it. Non-release prompts use targeted guardrails instead of blanket all-caps prohibition blocks, reducing over-triggered agents and tool calls while keeping true hard stops explicit.
|
|
186
|
+
- **Mutation boundary constraints** - write-capable Claude and Codex provider surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current task/subtask explicitly requires it. If broader scope is necessary, agents should report it as a blocker or tradeoff instead of silently expanding the diff.
|
|
187
|
+
- **Context-first prompt envelopes** - high-context `/map-plan`, `/map-efficient`, `/map-debug`, and `/map-review` agent prompts wrap branch artifacts in XML-style `<documents>`, then state the `<task>` and `<expected_output>`, so specs, review bundles, diffs, logs, and schemas stay visually and machine-semantically separated.
|
|
188
|
+
- **Skill IR audit** - release checks can lower shipped Claude and Codex `SKILL.md` files into a typed `SkillIR`, verify content hashes, catch unsupported frontmatter, reject missing supporting-file links, and block injection-like instructions before `mapify init` copies provider surfaces into user repos.
|
|
160
189
|
- **Reviewable diffs** - planning and task contracts keep changes small enough to inspect.
|
|
161
190
|
- **Contract-sized subtasks** - `/map-plan` and `/map-efficient` require per-subtask `expected_diff_size`, `concern_type`, `one_logical_step`, `hard_constraints`, `soft_constraints`, and `coverage_map` metadata, then validate `blueprint.json` before implementation so oversized, mixed-concern, untraceable, or hard-constraint-dropping plans fail early instead of surprising reviewers later. Soft constraints can be consciously traded off only with explicit rationale.
|
|
162
191
|
- **Useful quality gates** - `/map-check` and `/map-review` validate against the plan instead of just asking whether code "looks fine".
|
|
163
|
-
- **Review bundle** - `/map-review` auto-generates `.map/<branch>/review-bundle.json` and `.map/<branch>/review-bundle.md` before launching reviewer agents, bundling spec, plan, tests, verification, latest code review, `coverage_map` acceptance-tag evidence, and prior-stage consumption status into a single durable input contract. Reviewers read the bundle first; raw diff is secondary
|
|
192
|
+
- **Review bundle** - `/map-review` auto-generates `.map/<branch>/review-bundle.json` and `.map/<branch>/review-bundle.md` before launching reviewer agents, bundling spec, plan, tests, verification, latest code review, `coverage_map` acceptance-tag evidence, and prior-stage consumption status into a single durable input contract. Reviewers read the bundle first; raw diff is secondary and is clipped first when `build_review_prompts` has to keep each reviewer prompt under `MAP_REVIEW_PROMPT_BUDGET_TOKENS`. Use `/map-review --detached` to open an isolated read-only git worktree at `.map/<branch>/detached-review/` for clean-room inspection without touching the source branch. Bundle generation records the `review` stage in `.map/<branch>/artifact_manifest.json`; `python3 .map/scripts/map_step_runner.py validate_prior_stage_consumption review` can fail missing spec/blueprint/test/diff inputs before review. Section-order flags reduce anchoring bias: `--reverse-sections` (invert order), `--shuffle-sections [--seed N]` (seeded random order), `--compare-orderings` (run default + reverse, aggregate via strict-wins, surface drift).
|
|
193
|
+
- **Token budget report** - Actor context and review fan-out prompt builders append active-path budget decisions to `.map/<branch>/token_budget.json`, including before/after estimated tokens, clipped sections, source artifact references, and the budget environment variable. This is the operator breadcrumb for diagnosing missing context: inspect the report, then either raise `MAP_CONTEXT_BLOCK_BUDGET_TOKENS` / `MAP_REVIEW_PROMPT_BUDGET_TOKENS` or split the workflow before rerunning.
|
|
194
|
+
- **Clean retry quarantine** - after repeated Monitor rejection, write-capable workflows switch the next Actor attempt into clean-retry mode and use `.map/<branch>/retry_quarantine.json` instead of raw failed-session context. The artifact preserves constraints, required evidence, and do-not-repeat feedback so retries can change approach without dropping the contract.
|
|
164
195
|
- **Run health report** - `/map-efficient`, `/map-debug`, `/map-check`, and `/map-review` write `.map/<branch>/run_health_report.json` during closeout via `.map/scripts/map_step_runner.py write_run_health_report`. The report is a machine-readable snapshot of terminal status, step progress, retry counters, artifact presence, and latest hook-injection status, including explicit skipped reasons for malformed hook input or insignificant Bash commands when branch state can be safely updated. CI or operators can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`.
|
|
196
|
+
- **Compact recovery surface** - `/map-resume` keeps the active recovery flow in a short `SKILL.md` and moves low-frequency examples, state-file notes, token-budget notes, and troubleshooting into `resume-reference.md`, so users recovering after `/clear` or context exhaustion get the next checkpoint action without loading the whole reference appendix.
|
|
165
197
|
- **Project memory** - `/map-learn` turns hard-won fixes and gotchas into reusable context for the next session.
|
|
166
198
|
|
|
167
199
|
## Core Commands
|
|
@@ -221,7 +253,9 @@ Learner -> captures reusable project memory
|
|
|
221
253
|
|
|
222
254
|
For Claude Code, MAP slash surfaces live in `.claude/skills/map-*/SKILL.md` files created by `mapify init`. The `.claude/commands/` directory is reserved for user-custom commands and a README that points back to the skill-backed MAP surfaces. The shipped skill catalog classifies skills with `skillClass`: MAP slash workflows are `task` skills, while `map-state` is a `hybrid` skill because it combines planning guidance with hooks/scripts that manage `.map/<branch>/` focus artifacts.
|
|
223
255
|
|
|
224
|
-
For Codex CLI, `mapify init . --provider codex` creates `.
|
|
256
|
+
For Codex CLI, `mapify init . --provider codex` creates `.agents/skills/` for repository skills, `.codex/agents/`, `.codex/config.toml`, hooks, and shared `.map/scripts/`.
|
|
257
|
+
|
|
258
|
+
Maintainers can audit both provider skill trees with `python -m mapify_cli.skill_ir src/mapify_cli/templates/skills src/mapify_cli/templates/codex/skills`. The command exits non-zero if a shipped skill has unsupported frontmatter, unresolved bundled references, or hidden prompt-injection-like text.
|
|
225
259
|
|
|
226
260
|
MAP is inspired by [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025), which reported a 74% improvement in planning tasks. The CLI turns that idea into a practical software development workflow.
|
|
227
261
|
|
|
@@ -78,15 +78,34 @@ Then enable the Codex hook manually: run `/hooks`, select `PreToolUse`, press `t
|
|
|
78
78
|
|
|
79
79
|
If your Codex version does not support the `hooks` feature key yet, either start it with `codex --enable codex_hooks` or upgrade Codex first. Upgrading is recommended.
|
|
80
80
|
|
|
81
|
-
Pick a context-compression policy if you want
|
|
82
|
-
(`
|
|
81
|
+
Pick a context-compression policy if you want the `/compact` nudge
|
|
82
|
+
(default is `never` — the nudge is opt-in; see
|
|
83
|
+
[docs/USAGE.md#context-budget-policy](docs/USAGE.md)):
|
|
83
84
|
|
|
84
85
|
```bash
|
|
85
|
-
mapify init . --compression never #
|
|
86
|
-
mapify init . --compression
|
|
87
|
-
mapify init . --compression
|
|
86
|
+
mapify init . --compression never # default — no nudge
|
|
87
|
+
mapify init . --compression auto # nudge at threshold
|
|
88
|
+
mapify init . --compression aggressive # nudge at 0.4 x threshold
|
|
89
|
+
mapify init . --compression-threshold 250000 # Opus 1M / 50+ subtask plans
|
|
88
90
|
```
|
|
89
91
|
|
|
92
|
+
Context-block / review-prompt truncation was removed: Actor and reviewer
|
|
93
|
+
prompts always carry the full bundled context. If the conversation grows
|
|
94
|
+
beyond your model's window, opt into `/compact` via `--compression auto` or
|
|
95
|
+
trigger it manually.
|
|
96
|
+
|
|
97
|
+
Optionally opt into **Stack Overflow for Agents (SOFA)** read-only prior-art
|
|
98
|
+
search — **off by default**, no network or credentials unless you enable it:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
mapify init . --sofa # opt-in: enable the map-so-search skill
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
This writes `sofa.enabled: true` to `.map/config.yaml` and adds `.sofa/` to your
|
|
105
|
+
`.gitignore`. Without the flag, no SOFA code path runs. See the
|
|
106
|
+
[SOFA usage guide](docs/USAGE.md#stack-overflow-for-agents-sofa) for onboarding
|
|
107
|
+
and the untrusted-content boundary.
|
|
108
|
+
|
|
90
109
|
**3. Use the golden path for serious work**
|
|
91
110
|
|
|
92
111
|
When a task has unclear behavior, multiple files, or real review risk, run the full loop:
|
|
@@ -119,12 +138,19 @@ MAP review is useful, but it is not a replacement for engineering judgment. Seri
|
|
|
119
138
|
|
|
120
139
|
- **Daily-driver speed** - optimized for repeated use, not occasional demo workflows.
|
|
121
140
|
- **Low overhead** - structured enough to prevent chaos, lightweight enough to keep token and time cost under control.
|
|
141
|
+
- **Compact high-traffic playbooks** - `/map-plan`, `/map-efficient`, `/map-check`, and `/map-review` keep their active `SKILL.md` bodies focused on the next workflow action, with detailed examples and troubleshooting in bundled supporting files that load only when needed.
|
|
122
142
|
- **Calibrated workflow effort** - each shipped slash skill declares a `thinking_policy` and `parallel_tool_policy`, so lightweight commands stay direct while planning, review, and release workflows reserve deeper reasoning and parallel fan-out for the stages that benefit from it. Non-release prompts use targeted guardrails instead of blanket all-caps prohibition blocks, reducing over-triggered agents and tool calls while keeping true hard stops explicit.
|
|
143
|
+
- **Mutation boundary constraints** - write-capable Claude and Codex provider surfaces tell agents not to edit unrelated files, add or upgrade dependencies, or refactor neighboring code unless the current task/subtask explicitly requires it. If broader scope is necessary, agents should report it as a blocker or tradeoff instead of silently expanding the diff.
|
|
144
|
+
- **Context-first prompt envelopes** - high-context `/map-plan`, `/map-efficient`, `/map-debug`, and `/map-review` agent prompts wrap branch artifacts in XML-style `<documents>`, then state the `<task>` and `<expected_output>`, so specs, review bundles, diffs, logs, and schemas stay visually and machine-semantically separated.
|
|
145
|
+
- **Skill IR audit** - release checks can lower shipped Claude and Codex `SKILL.md` files into a typed `SkillIR`, verify content hashes, catch unsupported frontmatter, reject missing supporting-file links, and block injection-like instructions before `mapify init` copies provider surfaces into user repos.
|
|
123
146
|
- **Reviewable diffs** - planning and task contracts keep changes small enough to inspect.
|
|
124
147
|
- **Contract-sized subtasks** - `/map-plan` and `/map-efficient` require per-subtask `expected_diff_size`, `concern_type`, `one_logical_step`, `hard_constraints`, `soft_constraints`, and `coverage_map` metadata, then validate `blueprint.json` before implementation so oversized, mixed-concern, untraceable, or hard-constraint-dropping plans fail early instead of surprising reviewers later. Soft constraints can be consciously traded off only with explicit rationale.
|
|
125
148
|
- **Useful quality gates** - `/map-check` and `/map-review` validate against the plan instead of just asking whether code "looks fine".
|
|
126
|
-
- **Review bundle** - `/map-review` auto-generates `.map/<branch>/review-bundle.json` and `.map/<branch>/review-bundle.md` before launching reviewer agents, bundling spec, plan, tests, verification, latest code review, `coverage_map` acceptance-tag evidence, and prior-stage consumption status into a single durable input contract. Reviewers read the bundle first; raw diff is secondary
|
|
149
|
+
- **Review bundle** - `/map-review` auto-generates `.map/<branch>/review-bundle.json` and `.map/<branch>/review-bundle.md` before launching reviewer agents, bundling spec, plan, tests, verification, latest code review, `coverage_map` acceptance-tag evidence, and prior-stage consumption status into a single durable input contract. Reviewers read the bundle first; raw diff is secondary and is clipped first when `build_review_prompts` has to keep each reviewer prompt under `MAP_REVIEW_PROMPT_BUDGET_TOKENS`. Use `/map-review --detached` to open an isolated read-only git worktree at `.map/<branch>/detached-review/` for clean-room inspection without touching the source branch. Bundle generation records the `review` stage in `.map/<branch>/artifact_manifest.json`; `python3 .map/scripts/map_step_runner.py validate_prior_stage_consumption review` can fail missing spec/blueprint/test/diff inputs before review. Section-order flags reduce anchoring bias: `--reverse-sections` (invert order), `--shuffle-sections [--seed N]` (seeded random order), `--compare-orderings` (run default + reverse, aggregate via strict-wins, surface drift).
|
|
150
|
+
- **Token budget report** - Actor context and review fan-out prompt builders append active-path budget decisions to `.map/<branch>/token_budget.json`, including before/after estimated tokens, clipped sections, source artifact references, and the budget environment variable. This is the operator breadcrumb for diagnosing missing context: inspect the report, then either raise `MAP_CONTEXT_BLOCK_BUDGET_TOKENS` / `MAP_REVIEW_PROMPT_BUDGET_TOKENS` or split the workflow before rerunning.
|
|
151
|
+
- **Clean retry quarantine** - after repeated Monitor rejection, write-capable workflows switch the next Actor attempt into clean-retry mode and use `.map/<branch>/retry_quarantine.json` instead of raw failed-session context. The artifact preserves constraints, required evidence, and do-not-repeat feedback so retries can change approach without dropping the contract.
|
|
127
152
|
- **Run health report** - `/map-efficient`, `/map-debug`, `/map-check`, and `/map-review` write `.map/<branch>/run_health_report.json` during closeout via `.map/scripts/map_step_runner.py write_run_health_report`. The report is a machine-readable snapshot of terminal status, step progress, retry counters, artifact presence, and latest hook-injection status, including explicit skipped reasons for malformed hook input or insignificant Bash commands when branch state can be safely updated. CI or operators can fail inconsistent closeouts with `python3 .map/scripts/map_step_runner.py validate_run_health_report`.
|
|
153
|
+
- **Compact recovery surface** - `/map-resume` keeps the active recovery flow in a short `SKILL.md` and moves low-frequency examples, state-file notes, token-budget notes, and troubleshooting into `resume-reference.md`, so users recovering after `/clear` or context exhaustion get the next checkpoint action without loading the whole reference appendix.
|
|
128
154
|
- **Project memory** - `/map-learn` turns hard-won fixes and gotchas into reusable context for the next session.
|
|
129
155
|
|
|
130
156
|
## Core Commands
|
|
@@ -184,7 +210,9 @@ Learner -> captures reusable project memory
|
|
|
184
210
|
|
|
185
211
|
For Claude Code, MAP slash surfaces live in `.claude/skills/map-*/SKILL.md` files created by `mapify init`. The `.claude/commands/` directory is reserved for user-custom commands and a README that points back to the skill-backed MAP surfaces. The shipped skill catalog classifies skills with `skillClass`: MAP slash workflows are `task` skills, while `map-state` is a `hybrid` skill because it combines planning guidance with hooks/scripts that manage `.map/<branch>/` focus artifacts.
|
|
186
212
|
|
|
187
|
-
For Codex CLI, `mapify init . --provider codex` creates `.
|
|
213
|
+
For Codex CLI, `mapify init . --provider codex` creates `.agents/skills/` for repository skills, `.codex/agents/`, `.codex/config.toml`, hooks, and shared `.map/scripts/`.
|
|
214
|
+
|
|
215
|
+
Maintainers can audit both provider skill trees with `python -m mapify_cli.skill_ir src/mapify_cli/templates/skills src/mapify_cli/templates/codex/skills`. The command exits non-zero if a shipped skill has unsupported frontmatter, unresolved bundled references, or hidden prompt-injection-like text.
|
|
188
216
|
|
|
189
217
|
MAP is inspired by [MAP cognitive architecture](https://github.com/Shanka123/MAP) (Nature Communications, 2025), which reported a 74% improvement in planning tasks. The CLI turns that idea into a practical software development workflow.
|
|
190
218
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "mapify-cli"
|
|
3
|
+
version = "3.12.0"
|
|
4
|
+
description = "MAP Framework installer - Modular Agentic Planner for Claude Code"
|
|
5
|
+
authors = [{ name = "MAP Framework Contributors" }]
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
|
+
dependencies = [
|
|
9
|
+
"typer>=0.9.0",
|
|
10
|
+
"rich>=13.0.0",
|
|
11
|
+
"httpx>=0.25.0",
|
|
12
|
+
"jinja2>=3.1,<4",
|
|
13
|
+
"platformdirs>=4.0.0",
|
|
14
|
+
"readchar>=4.0.0",
|
|
15
|
+
"questionary>=2.0.0"
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
[project.optional-dependencies]
|
|
19
|
+
ssl = ["truststore>=0.9.0"]
|
|
20
|
+
test = [
|
|
21
|
+
"pytest>=7.0.0",
|
|
22
|
+
"pytest-asyncio>=0.26.0",
|
|
23
|
+
"pytest-cov>=4.0.0",
|
|
24
|
+
"pytest-mock>=3.10.0",
|
|
25
|
+
"pytest-timeout>=2.1.0",
|
|
26
|
+
"pyyaml>=6.0.0",
|
|
27
|
+
"hypothesis>=6.0.0",
|
|
28
|
+
"jsonschema>=4.0.0",
|
|
29
|
+
]
|
|
30
|
+
dev = [
|
|
31
|
+
"pytest>=7.0.0",
|
|
32
|
+
"pytest-asyncio>=0.26.0",
|
|
33
|
+
"pytest-cov>=4.0.0",
|
|
34
|
+
"pytest-mock>=3.10.0",
|
|
35
|
+
"pytest-timeout>=2.1.0",
|
|
36
|
+
"pyyaml>=6.0.0",
|
|
37
|
+
"hypothesis>=6.0.0",
|
|
38
|
+
"jsonschema>=4.0.0",
|
|
39
|
+
"black>=23.0.0",
|
|
40
|
+
"ruff>=0.1.0",
|
|
41
|
+
"mypy>=1.0.0",
|
|
42
|
+
"pyright>=1.1.400",
|
|
43
|
+
"truststore>=0.9.0",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[project.scripts]
|
|
47
|
+
mapify = "mapify_cli:main"
|
|
48
|
+
|
|
49
|
+
[build-system]
|
|
50
|
+
requires = ["hatchling"]
|
|
51
|
+
build-backend = "hatchling.build"
|
|
52
|
+
|
|
53
|
+
[tool.hatch.build]
|
|
54
|
+
include = [
|
|
55
|
+
"src/**/*.py",
|
|
56
|
+
"src/mapify_cli/templates/**/*",
|
|
57
|
+
"src/mapify_cli/templates_src/**/*.jinja",
|
|
58
|
+
"README.md",
|
|
59
|
+
]
|
|
60
|
+
exclude = [
|
|
61
|
+
"**/__pycache__/**",
|
|
62
|
+
"**/*.pyc",
|
|
63
|
+
"**/*.pyo",
|
|
64
|
+
"**/.DS_Store",
|
|
65
|
+
]
|
|
66
|
+
artifacts = [
|
|
67
|
+
"src/mapify_cli/templates/**/*",
|
|
68
|
+
"src/mapify_cli/templates_src/**/*.jinja",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[tool.hatch.build.targets.wheel]
|
|
72
|
+
packages = ["src/mapify_cli"]
|
|
73
|
+
# NOTE: do NOT force-include src/mapify_cli/templates_src here. It already lands
|
|
74
|
+
# in the wheel under mapify_cli/templates_src via `packages` + the global
|
|
75
|
+
# [tool.hatch.build] include/artifacts patterns for templates_src/**/*.jinja.
|
|
76
|
+
# A force-include duplicates every .jinja at the same archive path, which newer
|
|
77
|
+
# hatchling rejects with "A second file is being added ... at the same path".
|
|
78
|
+
|
|
79
|
+
[tool.hatch.build.targets.sdist]
|
|
80
|
+
include = [
|
|
81
|
+
"src/**/*.py",
|
|
82
|
+
"src/mapify_cli/templates/**/*",
|
|
83
|
+
"src/mapify_cli/templates_src/**/*.jinja",
|
|
84
|
+
"tests/**/*",
|
|
85
|
+
"README.md",
|
|
86
|
+
"LICENSE",
|
|
87
|
+
"pyproject.toml",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.mypy]
|
|
91
|
+
ignore_missing_imports = false
|
|
92
|
+
exclude = [
|
|
93
|
+
"src/mapify_cli/templates/map/scripts/",
|
|
94
|
+
"tests/skills_eval/fixtures/whole_skill/",
|
|
95
|
+
]
|
|
96
|
+
|
|
97
|
+
# Intentionally-broken seeded mini-repos used as whole-skill eval fixtures
|
|
98
|
+
# (e.g. a test importing a deliberately-absent module). They are seeded into a
|
|
99
|
+
# temp cwd at run time, never imported by the package — exclude from static
|
|
100
|
+
# analysis and the language server.
|
|
101
|
+
[tool.pyright]
|
|
102
|
+
# Pin import resolution to the project venv so `make lint` is deterministic
|
|
103
|
+
# regardless of which `pyright` is on PATH (e.g. a global Homebrew/node build
|
|
104
|
+
# that otherwise ignores .venv and spuriously reports unresolved imports).
|
|
105
|
+
venvPath = "."
|
|
106
|
+
venv = ".venv"
|
|
107
|
+
exclude = [
|
|
108
|
+
"**/node_modules",
|
|
109
|
+
"**/__pycache__",
|
|
110
|
+
"**/.*",
|
|
111
|
+
"tests/skills_eval/fixtures/whole_skill",
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
[tool.ruff]
|
|
115
|
+
extend-exclude = ["tests/skills_eval/fixtures/whole_skill"]
|
|
116
|
+
|
|
117
|
+
[[tool.mypy.overrides]]
|
|
118
|
+
module = "yaml"
|
|
119
|
+
ignore_missing_imports = true
|
|
120
|
+
|
|
121
|
+
[project.urls]
|
|
122
|
+
Homepage = "https://github.com/azalio/map-framework"
|
|
123
|
+
Repository = "https://github.com/azalio/map-framework.git"
|
|
124
|
+
Issues = "https://github.com/azalio/map-framework/issues"
|