@r1z4x/tezgah 1.0.0
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.
- package/CHANGELOG.md +738 -0
- package/LICENSE +21 -0
- package/MANIFEST +753 -0
- package/README.de.md +169 -0
- package/README.es.md +168 -0
- package/README.fr.md +166 -0
- package/README.md +161 -0
- package/README.tr.md +163 -0
- package/agents/tezgah-reviewer.md +70 -0
- package/bin/codegen +337 -0
- package/bin/consult +797 -0
- package/bin/tezgah-adhd +50 -0
- package/bin/tezgah-agents +45 -0
- package/bin/tezgah-capture +66 -0
- package/bin/tezgah-context +96 -0
- package/bin/tezgah-decisions +213 -0
- package/bin/tezgah-design +953 -0
- package/bin/tezgah-docs +1199 -0
- package/bin/tezgah-doctor +497 -0
- package/bin/tezgah-dsh +37 -0
- package/bin/tezgah-dsh.cmd +70 -0
- package/bin/tezgah-gate +75 -0
- package/bin/tezgah-import-ai-research +439 -0
- package/bin/tezgah-index +32 -0
- package/bin/tezgah-lessons +148 -0
- package/bin/tezgah-mcp +322 -0
- package/bin/tezgah-migrate +324 -0
- package/bin/tezgah-pony +50 -0
- package/bin/tezgah-research +772 -0
- package/bin/tezgah-rollback +93 -0
- package/bin/tezgah-route +124 -0
- package/bin/tezgah-setup +5798 -0
- package/bin/tezgah-status +383 -0
- package/bin/tezgah-task +607 -0
- package/bin/tezgah-taste +423 -0
- package/bin/tezgah-triage +485 -0
- package/bin/tezgah.js +36 -0
- package/commands/adhd.md +21 -0
- package/commands/ponytail.md +21 -0
- package/docs/README.md +112 -0
- package/docs/architecture.md +226 -0
- package/docs/citations-baseline.json +59 -0
- package/docs/clarity-baseline.json +116 -0
- package/docs/contract.md +416 -0
- package/docs/environment.md +141 -0
- package/docs/evidence.md +831 -0
- package/docs/feature-audit.md +139 -0
- package/docs/gate.md +407 -0
- package/docs/glossary.md +201 -0
- package/docs/hosts.md +400 -0
- package/docs/index.json +471 -0
- package/docs/judge.md +193 -0
- package/docs/layers.md +189 -0
- package/docs/models.md +160 -0
- package/docs/operations.md +666 -0
- package/docs/research.md +809 -0
- package/docs/results/paired-outcome-2026-10.jsonl +254 -0
- package/docs/results/paired-outcome-2026-10.md +204 -0
- package/docs/skills.md +236 -0
- package/docs/status-line.md +315 -0
- package/docs/testing.md +287 -0
- package/docs/vision.md +117 -0
- package/hooks/hooks.json +33 -0
- package/hooks/projects-auto-init.py +98 -0
- package/hooks/projects-posttooluse.py +149 -0
- package/hooks/projects-pretooluse.py +40 -0
- package/hooks/projects-stop.py +60 -0
- package/hooks/tezgah_agents.py +817 -0
- package/hooks/tezgah_apps.py +266 -0
- package/hooks/tezgah_attest.py +255 -0
- package/hooks/tezgah_clarity.py +171 -0
- package/hooks/tezgah_components.py +140 -0
- package/hooks/tezgah_context.py +2953 -0
- package/hooks/tezgah_embed.py +765 -0
- package/hooks/tezgah_gate.py +2736 -0
- package/hooks/tezgah_guard.py +177 -0
- package/hooks/tezgah_index.py +124 -0
- package/hooks/tezgah_integrity.py +5141 -0
- package/hooks/tezgah_judge.py +487 -0
- package/hooks/tezgah_lang.py +230 -0
- package/hooks/tezgah_lessons.py +210 -0
- package/hooks/tezgah_models.py +855 -0
- package/hooks/tezgah_paths.py +1132 -0
- package/hooks/tezgah_policy.py +1039 -0
- package/hooks/tezgah_rank.py +77 -0
- package/hooks/tezgah_replay.py +1109 -0
- package/hooks/tezgah_research.py +5176 -0
- package/hooks/tezgah_shapes.py +305 -0
- package/hooks/tezgah_skill_pick.py +227 -0
- package/hooks/tezgah_snapshot.py +490 -0
- package/hooks/tezgah_stopspec.py +320 -0
- package/hooks/tezgah_task.py +458 -0
- package/hooks/tezgah_taste.py +201 -0
- package/hooks/tezgah_untrusted.py +112 -0
- package/hooks/tezgah_update.py +430 -0
- package/hosts/codex/hook.py +268 -0
- package/hosts/codex/hooks.json +26 -0
- package/hosts/cursor/hook.py +461 -0
- package/hosts/cursor/hooks.json +44 -0
- package/hosts/dsh/hooks.json +21 -0
- package/hosts/dsh/statusline/lib/client.js +138 -0
- package/hosts/dsh/statusline/lib/index.js +104 -0
- package/hosts/dsh/statusline/package.json +28 -0
- package/hosts/omp/hook.py +277 -0
- package/hosts/omp/tezgah-hook.ts.in +701 -0
- package/hosts/opencode/plugins/tezgah.js +2742 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
- package/output-styles/tezgah.md +142 -0
- package/package.json +32 -0
- package/packaging/build.sh +342 -0
- package/packaging/install.ps1 +166 -0
- package/packaging/install.sh +56 -0
- package/packaging/upgrade.sh +142 -0
- package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
- package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
- package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
- package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
- package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
- package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
- package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
- package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
- package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
- package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
- package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
- package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
- package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
- package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
- package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
- package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
- package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
- package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
- package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
- package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
- package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
- package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
- package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
- package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
- package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
- package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
- package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
- package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
- package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
- package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
- package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
- package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
- package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
- package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
- package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
- package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
- package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
- package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
- package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
- package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
- package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
- package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
- package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
- package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
- package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
- package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
- package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
- package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
- package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
- package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
- package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
- package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
- package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
- package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
- package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
- package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
- package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
- package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
- package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
- package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
- package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
- package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
- package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
- package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
- package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
- package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
- package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
- package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
- package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
- package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
- package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
- package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
- package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
- package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
- package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
- package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
- package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
- package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
- package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
- package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
- package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
- package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
- package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
- package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
- package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
- package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
- package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
- package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
- package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
- package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
- package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
- package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
- package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
- package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
- package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
- package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
- package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
- package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
- package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
- package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
- package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
- package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
- package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
- package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
- package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
- package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
- package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
- package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
- package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
- package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
- package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
- package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
- package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
- package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
- package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
- package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
- package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
- package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
- package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
- package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
- package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
- package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
- package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
- package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
- package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
- package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
- package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
- package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
- package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
- package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
- package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
- package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
- package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
- package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
- package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
- package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
- package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
- package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
- package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
- package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
- package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
- package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
- package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
- package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
- package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
- package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
- package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
- package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
- package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
- package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
- package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
- package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
- package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
- package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
- package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
- package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
- package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
- package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
- package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
- package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
- package/skills/ai-research/SKILL.md +101 -0
- package/skills/ai-research/SOURCE +38 -0
- package/skills/ai-research/index/1-frame.md +18 -0
- package/skills/ai-research/index/2-data.md +21 -0
- package/skills/ai-research/index/3-train.md +48 -0
- package/skills/ai-research/index/4-measure.md +25 -0
- package/skills/ai-research/index/5-run.md +23 -0
- package/skills/ai-research/index/6-write.md +35 -0
- package/skills/ai-research/library.json +3456 -0
- package/skills/analyze-app/EVALS.md +82 -0
- package/skills/analyze-app/SKILL.md +188 -0
- package/skills/design-contract/EVALS.md +80 -0
- package/skills/design-contract/SKILL.md +171 -0
- package/skills/design-library/EVALS.md +85 -0
- package/skills/design-library/INDEX.md +59 -0
- package/skills/design-library/SKILL.md +58 -0
- package/skills/design-library/SOURCE +131 -0
- package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
- package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
- package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
- package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
- package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
- package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
- package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
- package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
- package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
- package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
- package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
- package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
- package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
- package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
- package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
- package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
- package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
- package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
- package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
- package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
- package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
- package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
- package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
- package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
- package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
- package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
- package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
- package/skills/feature-audit/EVALS.md +83 -0
- package/skills/feature-audit/SKILL.md +326 -0
- package/skills/harness/EVALS.md +81 -0
- package/skills/harness/SKILL.md +88 -0
- package/skills/i-have-adhd/EVALS.md +80 -0
- package/skills/i-have-adhd/SKILL.md +183 -0
- package/skills/no-ai-slop/EVALS.md +89 -0
- package/skills/no-ai-slop/SKILL.md +209 -0
- package/skills/no-ai-slop/eval.md +52 -0
- package/skills/plan-add/EVALS.md +79 -0
- package/skills/plan-add/SKILL.md +179 -0
- package/skills/plan-add/render_table.py +72 -0
- package/skills/plan-status/EVALS.md +78 -0
- package/skills/plan-status/SKILL.md +52 -0
- package/skills/plan-sync/EVALS.md +80 -0
- package/skills/plan-sync/SKILL.md +69 -0
- package/skills/pm-frameworks/SKILL.md +33 -0
- package/skills/pm-frameworks/SOURCE +39 -0
- package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
- package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
- package/skills/ponytail/EVALS.md +80 -0
- package/skills/ponytail/SKILL.md +124 -0
- package/skills/product-analysis/EVALS.md +103 -0
- package/skills/product-analysis/SKILL.md +361 -0
- package/skills/research/EVALS.md +104 -0
- package/skills/research/SKILL.md +570 -0
- package/skills/rl-env/SKILL.md +53 -0
- package/skills/rl-env/SOURCE +41 -0
- package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
- package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
- package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
- package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
- package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
- package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
- package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
- package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
- package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
- package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
- package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
- package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
- package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
- package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
- package/skills/tezgah-contract/EVALS.md +78 -0
- package/skills/tezgah-contract/SKILL.md +792 -0
- package/statusline.py +129 -0
- package/workflows/graph-impact.js +153 -0
- package/workflows/graph-map.js +158 -0
- package/workflows/graph-review.js +170 -0
package/bin/tezgah-adhd
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""tezgah-adhd [on|off] - arm or disarm the act-on-it output shape.
|
|
3
|
+
|
|
4
|
+
The rule is armed by default. `off` writes the kill switch
|
|
5
|
+
(~/.config/tezgah/adhd-off), which removes its paragraph from the injected text
|
|
6
|
+
and turns its status mark red on every host; `on` removes the file again. A repo
|
|
7
|
+
can opt out on its own with a `.no-adhd` mark, which this CLI does not touch:
|
|
8
|
+
that decision belongs to the repo, not to a one-off command.
|
|
9
|
+
|
|
10
|
+
The bare call is the query. Exit codes: 0 set or shown, 2 usage.
|
|
11
|
+
"""
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
HERE = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
16
|
+
sys.path.insert(0, os.path.join(HERE, "hooks"))
|
|
17
|
+
from tezgah_paths import CONFIG_DIR, OFF_DIRS, off # noqa: E402
|
|
18
|
+
|
|
19
|
+
SWITCH = "adhd-off"
|
|
20
|
+
USAGE = "usage: tezgah-adhd [on|off]"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def main(argv):
|
|
24
|
+
if "-h" in argv or "--help" in argv:
|
|
25
|
+
print(__doc__.strip())
|
|
26
|
+
return 0
|
|
27
|
+
args = [a for a in argv if not a.startswith("-")]
|
|
28
|
+
if not args:
|
|
29
|
+
print("off" if off(SWITCH) else "on")
|
|
30
|
+
return 0
|
|
31
|
+
if len(args) != 1 or args[0].lower() not in ("on", "off"):
|
|
32
|
+
print("%s\narguments: on, off" % USAGE, file=sys.stderr)
|
|
33
|
+
return 2
|
|
34
|
+
if args[0].lower() == "off":
|
|
35
|
+
os.makedirs(CONFIG_DIR, exist_ok=True)
|
|
36
|
+
open(os.path.join(CONFIG_DIR, SWITCH), "w", encoding="utf-8").close()
|
|
37
|
+
else:
|
|
38
|
+
# every switch channel, so `on` really answers off() rather than leaving
|
|
39
|
+
# a legacy copy in ~/.claude that keeps the rule disarmed
|
|
40
|
+
for directory in OFF_DIRS:
|
|
41
|
+
try:
|
|
42
|
+
os.remove(os.path.join(directory, SWITCH))
|
|
43
|
+
except OSError:
|
|
44
|
+
pass
|
|
45
|
+
print("adhd rule: %s" % ("off" if off(SWITCH) else "on"))
|
|
46
|
+
return 0
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
sys.exit(main(sys.argv[1:]))
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""tezgah-agents [PATH] generate/refresh this repo's tezgah subagent set.
|
|
3
|
+
tezgah-agents --json [PATH] print the opencode `config.agent` entries as JSON.
|
|
4
|
+
|
|
5
|
+
The hook hosts run the plain form from SessionStart via the shared context
|
|
6
|
+
(tezgah_context calls tezgah_agents.sync_root). opencode has no such hook, so
|
|
7
|
+
its plugin calls `--json` at config load (to arm the agents in the same session)
|
|
8
|
+
and spawns the plain form on the first message (to write the files as a
|
|
9
|
+
fallback). Same single Python source everywhere.
|
|
10
|
+
"""
|
|
11
|
+
import json
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
HERE = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
16
|
+
sys.path.insert(0, os.path.join(HERE, "hooks"))
|
|
17
|
+
from tezgah_agents import opencode_agents_json, sync_root # noqa: E402
|
|
18
|
+
from tezgah_context import repo_root, under # noqa: E402
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def main():
|
|
22
|
+
args = sys.argv[1:]
|
|
23
|
+
# Without this, `--help` is taken as PATH: it resolves under the root and
|
|
24
|
+
# the run prints nothing at all instead of the usage in the docstring.
|
|
25
|
+
if "-h" in args or "--help" in args:
|
|
26
|
+
print(__doc__.strip())
|
|
27
|
+
return 0
|
|
28
|
+
as_json = "--json" in args
|
|
29
|
+
args = [a for a in args if a != "--json"]
|
|
30
|
+
cwd = os.path.realpath(args[0] if args else os.getcwd())
|
|
31
|
+
if not under(cwd):
|
|
32
|
+
print("{}" if as_json else "", end="")
|
|
33
|
+
return 0
|
|
34
|
+
repo = repo_root(cwd)
|
|
35
|
+
if as_json:
|
|
36
|
+
print(json.dumps(opencode_agents_json(repo)))
|
|
37
|
+
return 0
|
|
38
|
+
note = sync_root(repo)
|
|
39
|
+
if note:
|
|
40
|
+
print(note)
|
|
41
|
+
return 0
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
if __name__ == "__main__":
|
|
45
|
+
sys.exit(main())
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""tezgah-capture '<json>' - take a pre-write snapshot from outside Python.
|
|
3
|
+
|
|
4
|
+
The one argument is the payload the gate hands tezgah_snapshot.capture, as a
|
|
5
|
+
single JSON object:
|
|
6
|
+
|
|
7
|
+
tezgah-capture '{"tool": "Edit", "input": {"file_path": "a.py"},
|
|
8
|
+
"cwd": "/repo/sub", "session_id": "abc"}'
|
|
9
|
+
|
|
10
|
+
It prints the snapshot id, or nothing when there was nothing to capture (a new
|
|
11
|
+
file, a tool that is not a write tool, a path that is not a readable regular
|
|
12
|
+
file). Exit codes: 0 captured or nothing to capture, 2 misuse - no argument,
|
|
13
|
+
unparseable or non-object JSON, or no session_id, which is required because a
|
|
14
|
+
capture with no session writes no ledger row and the id could not be found
|
|
15
|
+
again.
|
|
16
|
+
|
|
17
|
+
This exists for opencode, whose plugin is JavaScript and can only reach the
|
|
18
|
+
gate's Python through a process; every other host calls capture() in-process.
|
|
19
|
+
It is not called by any hook, and it never restores anything: rollback is
|
|
20
|
+
`bin/tezgah-rollback`, run by the user.
|
|
21
|
+
"""
|
|
22
|
+
import json
|
|
23
|
+
import os
|
|
24
|
+
import sys
|
|
25
|
+
|
|
26
|
+
HERE = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
27
|
+
sys.path.insert(0, os.path.join(HERE, "hooks"))
|
|
28
|
+
from tezgah_guard import import_failed # noqa: E402
|
|
29
|
+
try:
|
|
30
|
+
from tezgah_snapshot import capture # noqa: E402
|
|
31
|
+
except Exception as exc:
|
|
32
|
+
import_failed(exc)
|
|
33
|
+
|
|
34
|
+
USAGE = ('usage: tezgah-capture \'{"tool": "Edit", "input": {"file_path": "a.py"},'
|
|
35
|
+
' "cwd": "/repo", "session_id": "abc"}\'')
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def main(argv):
|
|
39
|
+
if len(argv) != 1 or not argv[0].strip():
|
|
40
|
+
print(USAGE, file=sys.stderr)
|
|
41
|
+
return 2
|
|
42
|
+
try:
|
|
43
|
+
payload = json.loads(argv[0])
|
|
44
|
+
except ValueError as exc:
|
|
45
|
+
print("tezgah-capture: the argument is not JSON (%s)\n%s" % (exc, USAGE),
|
|
46
|
+
file=sys.stderr)
|
|
47
|
+
return 2
|
|
48
|
+
if not isinstance(payload, dict):
|
|
49
|
+
print("tezgah-capture: the argument is not a JSON object\n%s" % USAGE,
|
|
50
|
+
file=sys.stderr)
|
|
51
|
+
return 2
|
|
52
|
+
session = str(payload.get("session_id") or "")
|
|
53
|
+
if not session:
|
|
54
|
+
print("tezgah-capture: no session_id; without one the snapshot would be "
|
|
55
|
+
"written to no ledger and its id could not be looked up\n%s" % USAGE,
|
|
56
|
+
file=sys.stderr)
|
|
57
|
+
return 2
|
|
58
|
+
sid = capture(str(payload.get("tool") or ""), payload.get("input") or {},
|
|
59
|
+
str(payload.get("cwd") or os.getcwd()), session)
|
|
60
|
+
if sid:
|
|
61
|
+
print(sid)
|
|
62
|
+
return 0
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
sys.exit(main(sys.argv[1:]))
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""tezgah-context EVENT [DIR] - the shared context text, for a non-Python host.
|
|
3
|
+
|
|
4
|
+
Prints what hooks/tezgah_context.context_for() builds for one normalized event,
|
|
5
|
+
so a host whose plugin is written in another language (opencode's tezgah.js)
|
|
6
|
+
gets the same text every Python adapter gets instead of a hand-kept paraphrase
|
|
7
|
+
that drifts from it. The host's own hook payload may be piped in on stdin as
|
|
8
|
+
JSON - `user_prompt` reads the submitted prompt from it.
|
|
9
|
+
|
|
10
|
+
tezgah-context session_start [DIR] the session brief
|
|
11
|
+
tezgah-context user_prompt [DIR] the per-turn reminder plus whichever
|
|
12
|
+
conditional rule this prompt arms
|
|
13
|
+
(stdin: {"prompt": "<submitted text>"})
|
|
14
|
+
tezgah-context subagent_start [DIR] the short brief for a delegated agent
|
|
15
|
+
tezgah-context post_compact [DIR] what a host re-injects after compaction
|
|
16
|
+
tezgah-context kind 'CMD' which tool a shell command really ran
|
|
17
|
+
(consult / research / judge / nothing):
|
|
18
|
+
a host whose plugin is not Python asks
|
|
19
|
+
here instead of guessing from a
|
|
20
|
+
substring
|
|
21
|
+
tezgah-context attest HOST SESSION [DIR]
|
|
22
|
+
the session-start attestation for a
|
|
23
|
+
host with no session-start hook
|
|
24
|
+
(opencode): one `attest` row and the
|
|
25
|
+
drift mark, nothing printed
|
|
26
|
+
|
|
27
|
+
DIR defaults to the current directory. Prints nothing outside a tezgah root, so
|
|
28
|
+
the host injects whatever it gets and a stale path costs nothing.
|
|
29
|
+
"""
|
|
30
|
+
import json
|
|
31
|
+
import os
|
|
32
|
+
import sys
|
|
33
|
+
|
|
34
|
+
HERE = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
35
|
+
sys.path.insert(0, os.path.join(HERE, "hooks"))
|
|
36
|
+
from tezgah_guard import attest_session, import_failed # noqa: E402
|
|
37
|
+
try:
|
|
38
|
+
from tezgah_context import context_for, shell_kind # noqa: E402
|
|
39
|
+
except Exception as exc:
|
|
40
|
+
import_failed(exc)
|
|
41
|
+
|
|
42
|
+
EVENTS = ("session_start", "user_prompt", "subagent_start", "post_compact")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def stdin_payload():
|
|
46
|
+
"""The host payload on stdin, or {} when there is none or it is malformed."""
|
|
47
|
+
if sys.stdin is None or sys.stdin.isatty():
|
|
48
|
+
return {}
|
|
49
|
+
try:
|
|
50
|
+
data = json.load(sys.stdin)
|
|
51
|
+
except Exception:
|
|
52
|
+
return {}
|
|
53
|
+
return data if isinstance(data, dict) else {}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def main():
|
|
57
|
+
args = sys.argv[1:]
|
|
58
|
+
if args and args[0] in ("-h", "--help"):
|
|
59
|
+
sys.stdout.write(__doc__.strip() + "\n")
|
|
60
|
+
return 0
|
|
61
|
+
if not args:
|
|
62
|
+
sys.stderr.write("tezgah-context: event required (%s, kind)\n"
|
|
63
|
+
% ", ".join(EVENTS))
|
|
64
|
+
return 2
|
|
65
|
+
event = args[0]
|
|
66
|
+
if event == "attest":
|
|
67
|
+
if len(args) < 3:
|
|
68
|
+
sys.stderr.write("tezgah-context: attest needs HOST SESSION [DIR]\n")
|
|
69
|
+
return 2
|
|
70
|
+
cwd = os.path.realpath(args[3]) if len(args) > 3 else os.getcwd()
|
|
71
|
+
attest_session(args[1], args[2], cwd)
|
|
72
|
+
return 0
|
|
73
|
+
if event == "kind":
|
|
74
|
+
# The used-tool kind of one shell command. A host whose plugin is in
|
|
75
|
+
# another language asks here rather than guessing: nothing printed means
|
|
76
|
+
# the command did not run the tool.
|
|
77
|
+
if len(args) < 2:
|
|
78
|
+
sys.stderr.write("tezgah-context: kind needs a command\n")
|
|
79
|
+
return 2
|
|
80
|
+
kind = shell_kind(args[1])
|
|
81
|
+
if kind:
|
|
82
|
+
sys.stdout.write(kind + "\n")
|
|
83
|
+
return 0
|
|
84
|
+
if event not in EVENTS:
|
|
85
|
+
sys.stderr.write("tezgah-context: unknown event %s (%s)\n"
|
|
86
|
+
% (event, ", ".join(EVENTS)))
|
|
87
|
+
return 2
|
|
88
|
+
cwd = os.path.realpath(args[1]) if len(args) > 1 else os.getcwd()
|
|
89
|
+
text = context_for(event, cwd, stdin_payload())
|
|
90
|
+
if text:
|
|
91
|
+
sys.stdout.write(text + "\n")
|
|
92
|
+
return 0
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if __name__ == "__main__":
|
|
96
|
+
sys.exit(main())
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""tezgah-decisions [check] [PATH] [--json] - the ADR record under `.tezgah/decisions/`.
|
|
3
|
+
|
|
4
|
+
A capability change owes an ADR: `skills/feature-audit/SKILL.md` asks a proposal
|
|
5
|
+
for "the ADR (context, decision, status, consequences) and what it supersedes",
|
|
6
|
+
hands the consult rule the word `adrs?|architecture decision record|design doc`,
|
|
7
|
+
and names "an ADR without a status" as the thing that must fail. Until this CLI
|
|
8
|
+
the repository asked for that record and gave it nowhere to live, no status
|
|
9
|
+
vocabulary and nothing that read it back.
|
|
10
|
+
|
|
11
|
+
A record is `.tezgah/decisions/NNN-slug.md` in the private `.tezgah` repository
|
|
12
|
+
(beside `plans/` and `research/`), written and committed the way plan-add writes
|
|
13
|
+
a plan: one significant decision per file - hard to reverse, spanning
|
|
14
|
+
components, or explained for a second time:
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
id: 001
|
|
18
|
+
title: Decisions are recorded as numbered ADRs
|
|
19
|
+
status: accepted # proposed | accepted | deprecated | superseded
|
|
20
|
+
date: 2026-09-30
|
|
21
|
+
supersedes: # the id (a file's NNN) this record replaces, else empty
|
|
22
|
+
---
|
|
23
|
+
## Context
|
|
24
|
+
<two to four sentences naming the constraints>
|
|
25
|
+
## Decision
|
|
26
|
+
<the decision, active voice>
|
|
27
|
+
## Consequences
|
|
28
|
+
<what gets easier, what gets harder, what new constraint appears>
|
|
29
|
+
|
|
30
|
+
tezgah-decisions check every record, listing what it read
|
|
31
|
+
tezgah-decisions check PATH the same for the repository at PATH (default: cwd)
|
|
32
|
+
tezgah-decisions --json the records and the problems as JSON
|
|
33
|
+
tezgah-decisions --help this text
|
|
34
|
+
|
|
35
|
+
A record's id is its file name's `NNN`: one record, one address, so a
|
|
36
|
+
`supersedes:` target and the file it names cannot disagree.
|
|
37
|
+
|
|
38
|
+
The checker refuses three things and only these: a record with no `status:`, a
|
|
39
|
+
status outside the four above, and a `supersedes:` naming no record in the
|
|
40
|
+
directory. A file that is not `NNN-slug.md` is not a record and is not read -
|
|
41
|
+
the count it prints is how a misplaced one shows up.
|
|
42
|
+
|
|
43
|
+
Exit codes: 0 every record is whole (or there are none), 1 a record was refused
|
|
44
|
+
(one `FAIL <path>: <what>` line each), 2 misuse.
|
|
45
|
+
"""
|
|
46
|
+
import json
|
|
47
|
+
import os
|
|
48
|
+
import re
|
|
49
|
+
import subprocess
|
|
50
|
+
import sys
|
|
51
|
+
|
|
52
|
+
HERE = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
53
|
+
sys.path.insert(0, os.path.join(HERE, "hooks"))
|
|
54
|
+
import tezgah_task as tt # noqa: E402
|
|
55
|
+
|
|
56
|
+
# Nygard's four states and the whole vocabulary: a status outside them is refused
|
|
57
|
+
# rather than printed, because "an ADR without a status" is the falsifier the
|
|
58
|
+
# feature-audit skill names and an undefined fifth state is that hole reworded.
|
|
59
|
+
STATUSES = ("proposed", "accepted", "deprecated", "superseded")
|
|
60
|
+
|
|
61
|
+
# The prose half of a record, in the order it is written.
|
|
62
|
+
SECTIONS = ("Context", "Decision", "Consequences")
|
|
63
|
+
|
|
64
|
+
# A record's file name: the three-digit id a `supersedes:` points at, then its
|
|
65
|
+
# slug. Anything else in the directory is not a record.
|
|
66
|
+
RECORD = re.compile(r"^(\d{3})-[^/]+\.md$")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def repo_root(path):
|
|
70
|
+
"""The repository this run is about: git's own answer, else the directory the
|
|
71
|
+
CLI was called in - a decision recorded under a tree git does not know is
|
|
72
|
+
still a decision. Resolved here the way bin/tezgah-task resolves its root,
|
|
73
|
+
because the two CLIs have to agree on which repository they are talking
|
|
74
|
+
about."""
|
|
75
|
+
try:
|
|
76
|
+
out = subprocess.run(["git", "-C", path, "rev-parse", "--show-toplevel"],
|
|
77
|
+
capture_output=True, text=True)
|
|
78
|
+
if out.returncode == 0 and out.stdout.strip():
|
|
79
|
+
return out.stdout.strip()
|
|
80
|
+
except OSError:
|
|
81
|
+
pass
|
|
82
|
+
return os.path.realpath(path)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def decision_record(text):
|
|
86
|
+
"""One record as a dict: its `key: value` frontmatter (id, title, status,
|
|
87
|
+
date, supersedes, "" for a key the file does not carry) plus its three prose
|
|
88
|
+
sections, each flattened to one line the way acceptance_items() flattens an
|
|
89
|
+
item.
|
|
90
|
+
|
|
91
|
+
Read through hooks/tezgah_task.py's frontmatter and section_lines, so a plan
|
|
92
|
+
and a record cannot disagree about what a `key: value` line or a `## Section`
|
|
93
|
+
is - the reader a plan is refused by is the reader a record is refused by."""
|
|
94
|
+
fields = tt.frontmatter(text)
|
|
95
|
+
record = dict((key, fields.get(key, "")) for key in
|
|
96
|
+
("id", "title", "status", "date", "supersedes"))
|
|
97
|
+
for name in SECTIONS:
|
|
98
|
+
record[name.lower()] = " ".join(
|
|
99
|
+
line.strip() for _, line in tt.section_lines(text, name) if line.strip())
|
|
100
|
+
return record
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def problems(record, ids, where):
|
|
104
|
+
"""The problems this one record has, [] when it is whole. `ids` is every id
|
|
105
|
+
the directory carries, so a `supersedes:` that names nothing is a broken
|
|
106
|
+
chain and not a typo no reader can see; `where` is its path relative to the
|
|
107
|
+
repository, so a `FAIL` line can be acted on."""
|
|
108
|
+
bad = []
|
|
109
|
+
status = record["status"]
|
|
110
|
+
if not status:
|
|
111
|
+
bad.append("%s: no `status:` - an ADR carries one of %s"
|
|
112
|
+
% (where, ", ".join(STATUSES)))
|
|
113
|
+
elif status not in STATUSES:
|
|
114
|
+
bad.append("%s: status %r is not one of %s"
|
|
115
|
+
% (where, status, ", ".join(STATUSES)))
|
|
116
|
+
# ponytail: supersedes is read as one or more whitespace-separated ids; a
|
|
117
|
+
# comma-separated list would read `001,` as an id no record carries, and that
|
|
118
|
+
# failure says which name is wrong, so it is left to the filer.
|
|
119
|
+
for target in record["supersedes"].split():
|
|
120
|
+
if target not in ids:
|
|
121
|
+
bad.append("%s: `supersedes: %s` names no record under .tezgah/decisions/"
|
|
122
|
+
% (where, target))
|
|
123
|
+
# ponytail: the three refusals are the contract the gap row set. A record
|
|
124
|
+
# whose prose sections are empty is read and printed, not refused - a fourth
|
|
125
|
+
# rule is one the feature-audit skill never asked for.
|
|
126
|
+
return bad
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def records_report(root):
|
|
130
|
+
"""Every record under `<root>/.tezgah/decisions/`:
|
|
131
|
+
{"records": how many files were read, "entries": [record ...], "problems":
|
|
132
|
+
["<path>: <what>" ...]}, each entry carrying decision_record()'s keys plus
|
|
133
|
+
"id" (its file name's NNN, overriding a frontmatter `id:` that disagrees) and
|
|
134
|
+
"path".
|
|
135
|
+
|
|
136
|
+
Two passes and not one: a `supersedes:` is answered against every id the
|
|
137
|
+
directory carries, and one the record replaced is usually read before the
|
|
138
|
+
record that replaces it. Never raises - an absent directory or an unreadable
|
|
139
|
+
file is skipped, not refused: this feeds a report, not a gate."""
|
|
140
|
+
directory = os.path.join(root, ".tezgah", "decisions")
|
|
141
|
+
try:
|
|
142
|
+
names = sorted(n for n in os.listdir(directory) if RECORD.match(n))
|
|
143
|
+
except OSError:
|
|
144
|
+
names = []
|
|
145
|
+
entries = []
|
|
146
|
+
for name in names:
|
|
147
|
+
path = os.path.join(directory, name)
|
|
148
|
+
try:
|
|
149
|
+
with open(path, "r", encoding="utf-8") as fh:
|
|
150
|
+
text = fh.read()
|
|
151
|
+
except OSError:
|
|
152
|
+
continue
|
|
153
|
+
record = decision_record(text)
|
|
154
|
+
record["id"] = RECORD.match(name).group(1)
|
|
155
|
+
record["path"] = os.path.relpath(path, root).replace(os.sep, "/")
|
|
156
|
+
entries.append(record)
|
|
157
|
+
ids = set(entry["id"] for entry in entries)
|
|
158
|
+
found = []
|
|
159
|
+
for record in entries:
|
|
160
|
+
found += problems(record, ids, record["path"])
|
|
161
|
+
return {"records": len(entries), "entries": entries, "problems": found}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def misuse(message):
|
|
165
|
+
"""Misuse exits 2, so a caller can tell it from a record that refuses."""
|
|
166
|
+
print("tezgah-decisions: %s" % message, file=sys.stderr)
|
|
167
|
+
return 2
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def show(report, root, as_json):
|
|
171
|
+
if as_json:
|
|
172
|
+
print(json.dumps({"root": root, "records": report["records"],
|
|
173
|
+
"entries": report["entries"],
|
|
174
|
+
"problems": report["problems"]},
|
|
175
|
+
indent=2, sort_keys=True))
|
|
176
|
+
return 1 if report["problems"] else 0
|
|
177
|
+
# the count is half the answer: a run that read nothing must not read as
|
|
178
|
+
# "every record is whole"
|
|
179
|
+
print("decisions under %s: %d record(s)"
|
|
180
|
+
% (os.path.join(root, ".tezgah", "decisions"), report["records"]))
|
|
181
|
+
for entry in report["entries"]:
|
|
182
|
+
print(" %s %-11s %s" % (entry["id"], entry["status"] or "(no status)",
|
|
183
|
+
entry["title"]))
|
|
184
|
+
for problem in report["problems"]:
|
|
185
|
+
print("FAIL %s" % problem)
|
|
186
|
+
return 1 if report["problems"] else 0
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def main(argv):
|
|
190
|
+
args = argv[1:]
|
|
191
|
+
flags = set(a for a in args if a.startswith("--"))
|
|
192
|
+
pos = [a for a in args if not a.startswith("--")]
|
|
193
|
+
unknown = sorted(f for f in flags if f not in ("--json", "--help"))
|
|
194
|
+
if unknown:
|
|
195
|
+
return misuse("unknown option(s): %s (try --help)" % ", ".join(unknown))
|
|
196
|
+
if "--help" in flags:
|
|
197
|
+
sys.stdout.write(__doc__.strip() + "\n")
|
|
198
|
+
return 0
|
|
199
|
+
cmd = pos[0] if pos else "check"
|
|
200
|
+
if cmd != "check":
|
|
201
|
+
return misuse("unknown command %r (check)" % cmd)
|
|
202
|
+
if len(pos) > 2:
|
|
203
|
+
return misuse("check takes one path, not %s" % ", ".join(pos[1:]))
|
|
204
|
+
root = repo_root(pos[1] if len(pos) > 1 else os.getcwd())
|
|
205
|
+
if not os.path.isdir(root):
|
|
206
|
+
return show({"records": 0, "entries": [],
|
|
207
|
+
"problems": ["%s: no such directory" % root]},
|
|
208
|
+
root, "--json" in flags)
|
|
209
|
+
return show(records_report(root), root, "--json" in flags)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
if __name__ == "__main__":
|
|
213
|
+
sys.exit(main(sys.argv))
|