mapify-cli 3.19.0__tar.gz → 3.20.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.19.0 → mapify_cli-3.20.0}/.claude/hooks/README.md +2 -1
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/PKG-INFO +1 -1
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/pyproject.toml +1 -1
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/__init__.py +1 -1
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/config/project_config.py +11 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/actor.md +1 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/README.md +2 -1
- mapify_cli-3.20.0/src/mapify_cli/templates/hooks/scrub-internal-ids.py +173 -0
- mapify_cli-3.20.0/src/mapify_cli/templates/map/scripts/scrub_internal_ids.py +536 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/hook-patterns.md +1 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/settings.json +11 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/actor.md.jinja +1 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/README.md.jinja +2 -1
- mapify_cli-3.20.0/src/mapify_cli/templates_src/hooks/scrub-internal-ids.py.jinja +173 -0
- mapify_cli-3.20.0/src/mapify_cli/templates_src/map/scripts/scrub_internal_ids.py.jinja +536 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/hook-patterns.md.jinja +1 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/settings.json.jinja +11 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/hooks/test_hook_inventory_smoke.py +7 -0
- mapify_cli-3.20.0/tests/hooks/test_scrub_internal_ids_hook.py +166 -0
- mapify_cli-3.20.0/tests/test_scrub_internal_ids.py +311 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/.claude/skills/README.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/.gitignore +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/LICENSE +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/README.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/_locking.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/cli_ui.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/config/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/config/mcp.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/config/settings.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/agent_generator.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/codex_copier.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/file_copier.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/managed_file_copier.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/providers.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/delivery/template_renderer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/dependency_graph.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/intent_detector.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/memory/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/memory/capture.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/memory/digest_schema.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/memory/finalize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/memory/recall.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/minimality_report.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/ralph_state.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/repo_insight.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/research_eval.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/schemas.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skill_ir.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/aggregator.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/apply_patcher.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/assertions.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/description_optimizer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/dispatcher.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/eval_schema.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/proposer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/runner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/skills_eval/viewer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/.gitignore +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/CLAUDE.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/documentation-reviewer.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/evaluator.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/final-verifier.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/monitor.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/predictor.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/reflector.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/research-agent.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/agents/task-decomposer.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/AGENTS.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/agents/decomposer.toml +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/agents/monitor.toml +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/agents/researcher.toml +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/config.toml +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/hooks.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/codex/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/context-meter.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/detect-clarification-triggers.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/end-of-turn.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/map-memory-capture.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/map-memory-endmark.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/map-memory-finalize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/map-memory-recall.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/map-token-meter.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/post-compact-context.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/pre-compact-save-transcript.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/ralph-context-pruner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/ralph-iteration-logger.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/safety-guardrails.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/workflow-context-injector.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/hooks/workflow-gate.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/diagnostics.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/map_orchestrator.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/map_step_runner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/map_utils.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/sofa_client.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/scripts/validate_spec_citations.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/analyze.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/handlers/common.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/handlers/go.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/handlers/python.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/handlers/rust.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/map/static-analysis/handlers/typescript.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/ralph-loop-config.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/bash-guidelines.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/decomposition-examples.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/escalation-matrix.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/host-paths.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/map-json-output-contracts.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/map-output-examples.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/map-xml-prompt-envelopes.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/mcp-usage-examples.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/step-state-schema.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/references/workflow-state-schema.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/rules/learned/README.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/README.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-check/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-check/check-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-debug/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-efficient/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-efficient/efficient-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-explain/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-fast/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-learn/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-learn/templates/example-rules.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-unconditional.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-learn/templates/rules-with-paths.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-memory-now/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-plan/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-plan/plan-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-release/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-resume/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-resume/resume-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-review/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-review/review-reference.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-skill-eval/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-so-search/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-so-search/scripts/sofa_search.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/scripts/check-complete.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/scripts/get-plan-path.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/scripts/init-session.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/scripts/show-focus.sh +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/templates/findings.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/templates/iteration_history.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/templates/progress.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-state/templates/task_plan.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-task/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-tdd/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-tokenreport/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/map-understand/SKILL.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/skills/skill-rules.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates/workflow-rules.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/.gitignore.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/CLAUDE.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/documentation-reviewer.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/evaluator.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/final-verifier.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/monitor.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/predictor.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/reflector.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/research-agent.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/agents/task-decomposer.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/AGENTS.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/agents/decomposer.toml.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/agents/monitor.toml.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/agents/researcher.toml.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/config.toml.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/hooks.json.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/codex/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/context-meter.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/detect-clarification-triggers.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/end-of-turn.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/map-memory-capture.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/map-memory-endmark.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/map-memory-finalize.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/map-memory-recall.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/map-token-meter.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/post-compact-context.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/pre-compact-save-transcript.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/ralph-context-pruner.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/ralph-iteration-logger.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/safety-guardrails.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/workflow-context-injector.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/hooks/workflow-gate.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/diagnostics.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/map_orchestrator.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/map_step_runner.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/map_utils.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/sofa_client.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/scripts/validate_spec_citations.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/analyze.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/common.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/go.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/python.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/rust.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/map/static-analysis/handlers/typescript.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/ralph-loop-config.json.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/bash-guidelines.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/decomposition-examples.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/escalation-matrix.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/host-paths.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/map-json-output-contracts.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/map-output-examples.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/map-xml-prompt-envelopes.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/mcp-usage-examples.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/step-state-schema.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/references/workflow-state-schema.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/rules/learned/README.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/README.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-check/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-check/check-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-debug/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-efficient/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-efficient/efficient-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-explain/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-fast/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-learn/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-learn/templates/example-rules.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-unconditional.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-learn/templates/rules-with-paths.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-memory-now/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-plan/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-plan/plan-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-release/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-resume/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-resume/resume-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-review/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-review/review-reference.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-skill-eval/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-so-search/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-so-search/scripts/sofa_search.py.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/scripts/check-complete.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/scripts/get-plan-path.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/scripts/init-session.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/scripts/show-focus.sh.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/templates/findings.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/templates/iteration_history.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/templates/progress.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-state/templates/task_plan.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-task/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-tdd/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-tokenreport/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/map-understand/SKILL.md.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/skills/skill-rules.json.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/templates_src/workflow-rules.json.jinja +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/token_budget.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/tool_output_offload.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/tools/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/tools/validate_dependencies.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/verification_recorder.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/workflow_finalizer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/workflow_logger.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/src/mapify_cli/workflow_state.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/conftest.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/fixtures/claude/escalation-matrix.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/fixtures/codex/config.toml +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/hooks/test_detect_clarification_triggers.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/hooks/test_end_of_turn.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/hooks/test_safety_guardrails.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/code_review.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/plan_handoff.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/spec.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/step_state_initialized.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/step_state_plan_complete.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/task_plan.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/fixtures/verification_summary.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/test_e2e_artifact_contracts.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/integration/test_e2e_claude_sdk.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/README.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_check_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_debug_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_debug_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_efficient_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_explain_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_fast_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_learn_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_memory_now_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_plan_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_release_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_resume_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_review_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_skill_eval_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_state_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_task_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_tdd_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/map_tokenreport_optimize_eval_set.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/src/utils.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_blocker/repo/tests/test_compute.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/src/calc.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/hidden/test_calc_full.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/src/calc.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_calc_vague/repo/tests/test_calc_basic.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/config.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/src/utils.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_pressure/repo/tests/test_price.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/config.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/src/utils.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_scope_trap/repo/tests/test_utils.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/src/semver.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver/repo/tests/test_semver.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/src/semver.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_vague/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/hidden/test_semver_full.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/manifest.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/blueprint.json +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/.map/main/task_plan_main.md +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/__init__.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/src/semver.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/fixtures/whole_skill/map_task_semver_weakgate/repo/tests/test_semver_basic.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/skills_eval/whole_skill/spike_runner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_agent_cli_correctness.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_agent_dispatch_audit.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_agent_frontmatter.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_artifact_schemas.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_bump_version.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_compaction_offload_integration.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_decomposition.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_dependency_graph.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_diagnostics.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_digest_schema.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_file_copier.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_hook_patterns.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_init_import_graph.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_intent_detector.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_inv1_no_anthropic_optimize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_jinja2_dep.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_locking.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_managed_file_copier.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_map_orchestrator.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_map_step_runner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_map_token_meter.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_map_utils_sanitize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_mapify_cli.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_memory_capture.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_memory_finalize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_memory_integration.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_memory_recall.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_memory_review_fixes.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_minimality_report.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_post_compact_context.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_prompt_layering.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_pyyaml_dep.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_ralph_hooks.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_ralph_state.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_repo_insight.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_research_eval.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_schemas.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skill_ir.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_consistency.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_aggregator.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_apply.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_cli_optimize.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_dispatcher_env.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_dispatcher_timeout.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_fixtures.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_optimizer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_optimizer_isolation.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_proposer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_runner.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_schema.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_skills_eval_viewer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_sofa_client.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_sofa_search.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_template_render.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_token_budget.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_tool_output_offload.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_validate_dependencies.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_validate_spec_citations.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_verification_recorder.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_workflow_context_injector.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_workflow_finalizer.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_workflow_gate.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_workflow_logger.py +0 -0
- {mapify_cli-3.19.0 → mapify_cli-3.20.0}/tests/test_workflow_state.py +0 -0
|
@@ -86,7 +86,7 @@ documented per event in the official Claude Code docs.
|
|
|
86
86
|
|
|
87
87
|
## Hook inventory
|
|
88
88
|
|
|
89
|
-
All
|
|
89
|
+
All 16 hooks (15 `.py` + `end-of-turn.sh`) are classified against the
|
|
90
90
|
`MAP_INVOKED_BY` recursion-guard contract. **REQUIRE_GUARD** hooks early-exit
|
|
91
91
|
when MAP spawns a nested subprocess; **FORBID_GUARD** hooks must always fire
|
|
92
92
|
and may not carry the guard. Full contract and per-hook rationale:
|
|
@@ -107,6 +107,7 @@ classification is enforced by `scripts/lint-hooks.py` (in `make lint` /
|
|
|
107
107
|
| `pre-compact-save-transcript.py` | `PreCompact` | No | REQUIRE_GUARD | Save full conversation transcript |
|
|
108
108
|
| `detect-clarification-triggers.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Detect "ask if unclear" + async/durability language |
|
|
109
109
|
| `end-of-turn.sh` | `Stop` | No | REQUIRE_GUARD | Auto-fix lint/format silently |
|
|
110
|
+
| `scrub-internal-ids.py` | `Stop` | No | REQUIRE_GUARD | On `WORKFLOW_COMPLETE`, strip leaked `ST-`/`AC-`/`VC-`/`INV-`/`HC-` IDs from run-changed code and commit the cleanup (gated, runs once) |
|
|
110
111
|
| `map-memory-capture.py` | `Stop` | No | REQUIRE_GUARD | Append per-turn scratch WAL record (cross-session memory) |
|
|
111
112
|
| `map-memory-endmark.py` | `SessionEnd` | No | REQUIRE_GUARD | Best-effort 'ended' marker for the session WAL |
|
|
112
113
|
| `map-memory-finalize.py` | `SessionStart` | No | REQUIRE_GUARD | Finalize prior dirty session scratches into digests (claude -p) |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mapify-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.20.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
|
|
@@ -122,6 +122,12 @@ class MapConfig:
|
|
|
122
122
|
# .map/config.yaml. When enabled, the map-so-search skill is available.
|
|
123
123
|
sofa_enabled: bool = False
|
|
124
124
|
|
|
125
|
+
# Strip MAP-internal workflow IDs (ST-/AC-/VC-/INV-/HC-) from run-changed
|
|
126
|
+
# code at workflow completion (Stop hook `scrub-internal-ids.py`). On by
|
|
127
|
+
# default; set `scrub_internal_ids: false` in .map/config.yaml to opt out
|
|
128
|
+
# and keep the IDs the framework wrote into comments/strings/test names.
|
|
129
|
+
scrub_internal_ids: bool = True
|
|
130
|
+
|
|
125
131
|
|
|
126
132
|
def load_map_config(project_path: Path) -> MapConfig:
|
|
127
133
|
"""Load MAP config from .map/config.yaml with fallback to defaults.
|
|
@@ -384,6 +390,11 @@ minimality: lite
|
|
|
384
390
|
# Stack Overflow for Agents (SOFA) integration — opt-in, off by default.
|
|
385
391
|
# Enable via `mapify init --sofa` or uncomment the line below.
|
|
386
392
|
# sofa.enabled: false
|
|
393
|
+
|
|
394
|
+
# Strip MAP-internal workflow IDs (ST-/AC-/VC-/INV-/HC-) from the code a run
|
|
395
|
+
# changed, at workflow completion (Stop hook). On by default; uncomment and set
|
|
396
|
+
# to false to keep the IDs the framework wrote into comments/strings/test names.
|
|
397
|
+
# scrub_internal_ids: true
|
|
387
398
|
"""
|
|
388
399
|
|
|
389
400
|
|
|
@@ -776,6 +776,7 @@ Follow this protocol exactly — do not infer "how seniors write" or add stylist
|
|
|
776
776
|
4. **Intent comments**: Add a one-line `# Intent: <why>` comment above any non-obvious logic block. Do NOT comment obvious code.
|
|
777
777
|
5. **Performance**: Clarity first, optimize only if proven necessary.
|
|
778
778
|
6. **Imports**: Group by stdlib → third-party → local. One blank line between groups.
|
|
779
|
+
7. **No internal workflow IDs in comments or strings**: NEVER write MAP-internal workflow identifiers — subtask `ST-001`, acceptance criteria `AC-3`, verification criteria `VC1`, invariants `INV-7`, hard constraints `HC-1` — into shipped code comments or string literals. They are workflow scaffolding, not user-facing documentation. State the *reason* without the ID (`# enforce single-writer invariant`, not `# INV-7 single writer`). The one exception is the transient `test_vc<n>_*` test-naming aid described above: keep it during the run — the framework strips the `vc<n>` segment from shipped tests automatically at completion.
|
|
779
780
|
|
|
780
781
|
## Error Handling Patterns
|
|
781
782
|
|
|
@@ -86,7 +86,7 @@ documented per event in the official Claude Code docs.
|
|
|
86
86
|
|
|
87
87
|
## Hook inventory
|
|
88
88
|
|
|
89
|
-
All
|
|
89
|
+
All 16 hooks (15 `.py` + `end-of-turn.sh`) are classified against the
|
|
90
90
|
`MAP_INVOKED_BY` recursion-guard contract. **REQUIRE_GUARD** hooks early-exit
|
|
91
91
|
when MAP spawns a nested subprocess; **FORBID_GUARD** hooks must always fire
|
|
92
92
|
and may not carry the guard. Full contract and per-hook rationale:
|
|
@@ -107,6 +107,7 @@ classification is enforced by `scripts/lint-hooks.py` (in `make lint` /
|
|
|
107
107
|
| `pre-compact-save-transcript.py` | `PreCompact` | No | REQUIRE_GUARD | Save full conversation transcript |
|
|
108
108
|
| `detect-clarification-triggers.py` | `UserPromptSubmit` | No | REQUIRE_GUARD | Detect "ask if unclear" + async/durability language |
|
|
109
109
|
| `end-of-turn.sh` | `Stop` | No | REQUIRE_GUARD | Auto-fix lint/format silently |
|
|
110
|
+
| `scrub-internal-ids.py` | `Stop` | No | REQUIRE_GUARD | On `WORKFLOW_COMPLETE`, strip leaked `ST-`/`AC-`/`VC-`/`INV-`/`HC-` IDs from run-changed code and commit the cleanup (gated, runs once) |
|
|
110
111
|
| `map-memory-capture.py` | `Stop` | No | REQUIRE_GUARD | Append per-turn scratch WAL record (cross-session memory) |
|
|
111
112
|
| `map-memory-endmark.py` | `SessionEnd` | No | REQUIRE_GUARD | Best-effort 'ended' marker for the session WAL |
|
|
112
113
|
| `map-memory-finalize.py` | `SessionStart` | No | REQUIRE_GUARD | Finalize prior dirty session scratches into digests (claude -p) |
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Strip MAP-internal workflow IDs from shipped code — Stop hook.
|
|
3
|
+
|
|
4
|
+
Runs when the main agent finishes a turn (Stop event). It is a thin, strictly
|
|
5
|
+
gated wrapper: the deterministic work lives in ``.map/scripts/scrub_internal_ids
|
|
6
|
+
.py`` (stdlib-only, importable-free, identical in this repo and installed
|
|
7
|
+
projects — same split as ``map-token-meter`` / ``map_step_runner``).
|
|
8
|
+
|
|
9
|
+
Why a Stop hook and not a skill step: the executor must not depend on the agent
|
|
10
|
+
remembering to call a command at close. The harness fires Stop deterministically;
|
|
11
|
+
the hook decides for itself whether the run is done.
|
|
12
|
+
|
|
13
|
+
Gating (no-op in ~all turns):
|
|
14
|
+
1. ``MAP_INVOKED_BY`` set -> exit (don't run inside a sub-agent).
|
|
15
|
+
2. no ``.map/<branch>/step_state.json`` OR ``workflow_status`` is not
|
|
16
|
+
``WORKFLOW_COMPLETE`` -> exit (run not finished).
|
|
17
|
+
3. marker ``.map/<branch>/.scrub_done`` present -> exit (already ran once).
|
|
18
|
+
4. ``scrub_internal_ids: false`` in ``.map/config.yaml`` -> exit (opt-out).
|
|
19
|
+
|
|
20
|
+
When it does run: calls the engine in ``clean`` mode, commits the resulting
|
|
21
|
+
working-tree changes as a dedicated ``chore(map): strip internal workflow IDs``
|
|
22
|
+
commit (never amends), and writes the marker so it fires exactly once.
|
|
23
|
+
|
|
24
|
+
Synchronous by design (justified exception to the async-hook rule): the scrub
|
|
25
|
+
must finish and commit before the run is considered done; a detached run would
|
|
26
|
+
race the close/PR and could land after it. The work is fast — scoped to the
|
|
27
|
+
run's git diff, like ``end-of-turn.sh``.
|
|
28
|
+
|
|
29
|
+
Exit codes: always 0. The scrub is advisory and must never block a turn.
|
|
30
|
+
"""
|
|
31
|
+
from __future__ import annotations
|
|
32
|
+
|
|
33
|
+
import json
|
|
34
|
+
import os
|
|
35
|
+
import re
|
|
36
|
+
import subprocess
|
|
37
|
+
import sys
|
|
38
|
+
from pathlib import Path
|
|
39
|
+
from typing import NoReturn
|
|
40
|
+
|
|
41
|
+
PROJECT_DIR = Path(os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd()))
|
|
42
|
+
ENGINE = PROJECT_DIR / ".map" / "scripts" / "scrub_internal_ids.py"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _silent() -> NoReturn:
|
|
46
|
+
sys.stdout.write("{}")
|
|
47
|
+
sys.exit(0)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _sanitize_branch(branch: str) -> str:
|
|
51
|
+
sanitized = branch.replace("/", "-")
|
|
52
|
+
sanitized = re.sub(r"[^a-zA-Z0-9_.-]", "-", sanitized)
|
|
53
|
+
sanitized = re.sub(r"-+", "-", sanitized).strip("-")
|
|
54
|
+
if ".." in sanitized or sanitized.startswith("."):
|
|
55
|
+
return "default"
|
|
56
|
+
return sanitized or "default"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _get_branch() -> str:
|
|
60
|
+
try:
|
|
61
|
+
result = subprocess.run(
|
|
62
|
+
["git", "rev-parse", "--abbrev-ref", "HEAD"],
|
|
63
|
+
capture_output=True, text=True, cwd=PROJECT_DIR, timeout=2,
|
|
64
|
+
)
|
|
65
|
+
if result.returncode == 0:
|
|
66
|
+
return _sanitize_branch(result.stdout.strip())
|
|
67
|
+
except Exception:
|
|
68
|
+
pass
|
|
69
|
+
return "default"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _scrub_enabled(branch_dir: Path) -> bool:
|
|
73
|
+
"""Honor the ``scrub_internal_ids`` opt-out in .map/config.yaml (default on).
|
|
74
|
+
|
|
75
|
+
Minimal stdlib parse — PyYAML is not guaranteed in installed projects.
|
|
76
|
+
"""
|
|
77
|
+
config = PROJECT_DIR / ".map" / "config.yaml"
|
|
78
|
+
if not config.exists():
|
|
79
|
+
return True
|
|
80
|
+
try:
|
|
81
|
+
text = config.read_text(encoding="utf-8")
|
|
82
|
+
except OSError:
|
|
83
|
+
return True
|
|
84
|
+
m = re.search(r"^\s*scrub[._]internal_ids\s*:\s*(\S+)", text, re.MULTILINE)
|
|
85
|
+
if m and m.group(1).strip().lower() in ("false", "no", "off", "0"):
|
|
86
|
+
return False
|
|
87
|
+
return True
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def main() -> None:
|
|
91
|
+
if os.environ.get("MAP_INVOKED_BY"):
|
|
92
|
+
sys.exit(0)
|
|
93
|
+
# Stop payload is read defensively but not required.
|
|
94
|
+
try:
|
|
95
|
+
json.load(sys.stdin)
|
|
96
|
+
except (json.JSONDecodeError, ValueError):
|
|
97
|
+
pass
|
|
98
|
+
|
|
99
|
+
branch = _get_branch()
|
|
100
|
+
branch_dir = PROJECT_DIR / ".map" / branch
|
|
101
|
+
state_file = branch_dir / "step_state.json"
|
|
102
|
+
if not state_file.exists():
|
|
103
|
+
_silent()
|
|
104
|
+
try:
|
|
105
|
+
state = json.loads(state_file.read_text(encoding="utf-8"))
|
|
106
|
+
except (json.JSONDecodeError, OSError):
|
|
107
|
+
_silent()
|
|
108
|
+
|
|
109
|
+
status = str(state.get("workflow_status") or "").strip().upper()
|
|
110
|
+
if status != "WORKFLOW_COMPLETE":
|
|
111
|
+
_silent()
|
|
112
|
+
|
|
113
|
+
marker = branch_dir / ".scrub_done"
|
|
114
|
+
if marker.exists():
|
|
115
|
+
_silent()
|
|
116
|
+
if not _scrub_enabled(branch_dir):
|
|
117
|
+
marker.write_text("disabled\n", encoding="utf-8")
|
|
118
|
+
_silent()
|
|
119
|
+
if not ENGINE.exists():
|
|
120
|
+
_silent()
|
|
121
|
+
|
|
122
|
+
# Run the engine. MAP_INVOKED_BY guards any nested hook from re-entering.
|
|
123
|
+
env = {**os.environ, "MAP_INVOKED_BY": "scrub-internal-ids"}
|
|
124
|
+
try:
|
|
125
|
+
proc = subprocess.run(
|
|
126
|
+
[sys.executable, str(ENGINE), "clean", "--branch", branch],
|
|
127
|
+
capture_output=True, text=True, cwd=PROJECT_DIR, env=env, timeout=120,
|
|
128
|
+
)
|
|
129
|
+
except (OSError, subprocess.SubprocessError):
|
|
130
|
+
_silent()
|
|
131
|
+
|
|
132
|
+
report = {}
|
|
133
|
+
try:
|
|
134
|
+
report = json.loads(proc.stdout)
|
|
135
|
+
except (json.JSONDecodeError, ValueError):
|
|
136
|
+
report = {}
|
|
137
|
+
|
|
138
|
+
modified = report.get("files_modified") or []
|
|
139
|
+
if modified:
|
|
140
|
+
try:
|
|
141
|
+
subprocess.run(["git", "add", "--", *modified], cwd=PROJECT_DIR,
|
|
142
|
+
env=env, capture_output=True, text=True, timeout=15)
|
|
143
|
+
subprocess.run(
|
|
144
|
+
["git", "commit", "-m", "chore(map): strip internal workflow IDs"],
|
|
145
|
+
cwd=PROJECT_DIR, env=env, capture_output=True, text=True, timeout=30,
|
|
146
|
+
)
|
|
147
|
+
except (OSError, subprocess.SubprocessError):
|
|
148
|
+
pass # leave the cleaned working tree in place; never block
|
|
149
|
+
|
|
150
|
+
# Mark done so the scrub fires exactly once for this completed run.
|
|
151
|
+
try:
|
|
152
|
+
marker.write_text(
|
|
153
|
+
json.dumps({
|
|
154
|
+
"files_modified": modified,
|
|
155
|
+
"tokens_removed": report.get("tokens_removed", 0),
|
|
156
|
+
"tests_renamed": report.get("tests_renamed", []),
|
|
157
|
+
"residual": report.get("residual", []),
|
|
158
|
+
}) + "\n",
|
|
159
|
+
encoding="utf-8",
|
|
160
|
+
)
|
|
161
|
+
except OSError:
|
|
162
|
+
pass
|
|
163
|
+
|
|
164
|
+
if report.get("residual"):
|
|
165
|
+
sys.stderr.write(
|
|
166
|
+
"[scrub-internal-ids] could not auto-remove some internal IDs; "
|
|
167
|
+
f"see {marker} (residual list).\n"
|
|
168
|
+
)
|
|
169
|
+
_silent()
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
if __name__ == "__main__":
|
|
173
|
+
main()
|