@r1z4x/tezgah 1.9.2 → 1.13.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 +415 -1
- package/MANIFEST +404 -144
- package/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.md +5 -4
- package/README.tr.md +1 -1
- package/bin/codegen +5 -2
- package/bin/tezgah-design +288 -1
- package/bin/tezgah-docs +1 -1
- package/bin/tezgah-doctor +39 -2
- package/bin/tezgah-import-ai-research +26 -12
- package/bin/tezgah-ocr-review +296 -0
- package/bin/tezgah-research +255 -44
- package/bin/tezgah-review-quote +185 -0
- package/bin/tezgah-setup +1365 -55
- package/bin/tezgah-skill +1 -1
- package/bin/tezgah-status +201 -3
- package/bin/tezgah-task +258 -20
- package/commands/adhd.md +2 -2
- package/commands/ponytail.md +4 -4
- package/docs/architecture.md +2 -2
- package/docs/citations-baseline.json +3 -3
- package/docs/clarity-baseline.json +11 -5
- package/docs/contract.md +91 -43
- package/docs/environment.md +5 -2
- package/docs/evidence.md +109 -17
- package/docs/feature-audit.md +2 -2
- package/docs/gate.md +60 -33
- package/docs/glossary.md +6 -3
- package/docs/hosts.md +313 -17
- package/docs/index.json +34 -8
- package/docs/judge.md +4 -2
- package/docs/layers.md +4 -4
- package/docs/models.md +37 -9
- package/docs/operations.md +141 -5
- package/docs/research.md +815 -8
- package/docs/skills.md +137 -13
- package/docs/status-line.md +121 -1
- package/docs/testing.md +3 -1
- package/hooks/hooks.json +2 -2
- package/hooks/lang/en.json +21 -0
- package/hooks/lang/tr.json +22 -1
- package/hooks/projects-stop.py +2 -1
- package/hooks/tezgah_agents.py +65 -25
- package/hooks/tezgah_apps.py +18 -0
- package/hooks/tezgah_attest.py +79 -10
- package/hooks/tezgah_components.py +4 -0
- package/hooks/tezgah_context.py +207 -55
- package/hooks/tezgah_extension.py +337 -0
- package/hooks/tezgah_gate.py +267 -79
- package/hooks/tezgah_integrity.py +864 -143
- package/hooks/tezgah_judge.py +6 -4
- package/hooks/tezgah_models.py +59 -19
- package/hooks/tezgah_orca.py +1 -1
- package/hooks/tezgah_paths.py +145 -8
- package/hooks/tezgah_policy.py +128 -57
- package/hooks/tezgah_rank.py +9 -6
- package/hooks/tezgah_replay.py +12 -6
- package/hooks/tezgah_research.py +1414 -76
- package/hooks/tezgah_research_capture.py +1544 -0
- package/hooks/tezgah_research_evidence.py +842 -0
- package/hooks/tezgah_research_stats.py +258 -0
- package/hooks/tezgah_skill_pick.py +408 -106
- package/hooks/tezgah_stack.py +236 -1
- package/hooks/tezgah_stopspec.py +8 -1
- package/hooks/tezgah_task.py +14 -5
- package/hooks/tezgah_taste_ledger.py +1 -1
- package/hosts/amp/hook.py +217 -0
- package/hosts/amp/tezgah-plugin.ts.in +386 -0
- package/hosts/antigravity/hook.py +255 -0
- package/hosts/codex/hook.py +2 -1
- package/hosts/commandcode/hook.py +239 -0
- package/hosts/copilot/hook.py +284 -0
- package/hosts/cursor/hook.py +31 -3
- package/hosts/droid/hook.py +259 -0
- package/hosts/dsh/hooks.json +1 -1
- package/hosts/gemini/hook.py +213 -0
- package/hosts/goose/hook.py +145 -0
- package/hosts/omp/hook.py +4 -1
- package/hosts/omp/tezgah-hook.ts.in +30 -7
- package/hosts/opencode/plugins/tezgah.js +309 -48
- package/hosts/opencode/tui/cli/tui.tsx +100 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +2 -1
- package/hosts/qwen/hook.py +206 -0
- package/output-styles/tezgah.md +20 -15
- package/package.json +1 -1
- package/skills/ai-research/SKILL.md +21 -14
- package/skills/ai-research/SOURCE +7 -5
- package/skills/ai-research/index/1-frame.md +6 -6
- package/skills/ai-research/index/2-data.md +9 -9
- package/skills/ai-research/index/3-train.md +36 -36
- package/skills/ai-research/index/4-measure.md +13 -13
- package/skills/ai-research/index/5-run.md +11 -11
- package/skills/ai-research/index/6-write.md +23 -23
- package/skills/ai-research/library.json +104 -104
- package/skills/analyze-app/SKILL.md +17 -12
- package/skills/design-contract/SKILL.md +42 -7
- package/skills/design-contract/data-views.md +2 -2
- package/skills/design-library/EVALS.md +1 -1
- package/skills/design-library/INDEX.md +39 -39
- package/skills/design-library/SKILL.md +19 -13
- package/skills/design-library/SOURCE +45 -43
- package/skills/feature-audit/SKILL.md +20 -14
- package/skills/hallmark/LICENSE +21 -0
- package/skills/hallmark/SKILL.md +154 -0
- package/skills/hallmark/SOURCE +207 -0
- package/skills/hallmark/agents/openai.yaml +13 -0
- package/skills/hallmark/references/anatomy.md +71 -0
- package/skills/hallmark/references/brand-truth.md +40 -0
- package/skills/hallmark/references/comp.md +104 -0
- package/skills/hallmark/references/craft.md +116 -0
- package/skills/hallmark/references/dark-mode.md +49 -0
- package/skills/hallmark/references/data-viz.md +48 -0
- package/skills/hallmark/references/design-md.md +53 -0
- package/skills/hallmark/references/direction.md +52 -0
- package/skills/hallmark/references/export-formats.md +80 -0
- package/skills/hallmark/references/flow.md +131 -0
- package/skills/hallmark/references/fonts.md +58 -0
- package/skills/hallmark/references/gates.md +243 -0
- package/skills/hallmark/references/genres/atmospheric.md +24 -0
- package/skills/hallmark/references/genres/editorial.md +24 -0
- package/skills/hallmark/references/genres/modern-minimal.md +24 -0
- package/skills/hallmark/references/genres/playful.md +24 -0
- package/skills/hallmark/references/imagery.md +99 -0
- package/skills/hallmark/references/interaction-and-states.md +89 -0
- package/skills/hallmark/references/layout.md +104 -0
- package/skills/hallmark/references/macrostructures/01-bento-grid.md +21 -0
- package/skills/hallmark/references/macrostructures/02-long-document.md +35 -0
- package/skills/hallmark/references/macrostructures/03-marquee-hero.md +21 -0
- package/skills/hallmark/references/macrostructures/04-stat-led.md +21 -0
- package/skills/hallmark/references/macrostructures/05-workbench.md +21 -0
- package/skills/hallmark/references/macrostructures/06-conversational-faq.md +28 -0
- package/skills/hallmark/references/macrostructures/07-manifesto.md +28 -0
- package/skills/hallmark/references/macrostructures/08-photographic.md +21 -0
- package/skills/hallmark/references/macrostructures/09-quote-led.md +21 -0
- package/skills/hallmark/references/macrostructures/10-specimen.md +21 -0
- package/skills/hallmark/references/macrostructures/11-catalogue.md +21 -0
- package/skills/hallmark/references/macrostructures/12-letter.md +21 -0
- package/skills/hallmark/references/macrostructures/13-index-first.md +21 -0
- package/skills/hallmark/references/macrostructures/14-narrative-workflow.md +21 -0
- package/skills/hallmark/references/macrostructures/15-split-studio.md +21 -0
- package/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
- package/skills/hallmark/references/macrostructures/17-type-specimen.md +19 -0
- package/skills/hallmark/references/macrostructures/18-portfolio-grid.md +21 -0
- package/skills/hallmark/references/macrostructures/19-map-diagram.md +21 -0
- package/skills/hallmark/references/macrostructures/20-ecosystem-index.md +19 -0
- package/skills/hallmark/references/macrostructures/21-component-playground.md +21 -0
- package/skills/hallmark/references/macrostructures.md +119 -0
- package/skills/hallmark/references/microinteractions.md +80 -0
- package/skills/hallmark/references/patterns.md +202 -0
- package/skills/hallmark/references/redesign.md +88 -0
- package/skills/hallmark/references/responsive.md +46 -0
- package/skills/hallmark/references/review-finish.md +19 -0
- package/skills/hallmark/references/review-hero.md +20 -0
- package/skills/hallmark/references/scroll-choreography.md +110 -0
- package/skills/hallmark/references/texture.md +90 -0
- package/skills/hallmark/references/themes/README.md +58 -0
- package/skills/hallmark/references/themes/almanac.jpg +0 -0
- package/skills/hallmark/references/themes/almanac.md +103 -0
- package/skills/hallmark/references/themes/arcade.jpg +0 -0
- package/skills/hallmark/references/themes/arcade.md +102 -0
- package/skills/hallmark/references/themes/atelier.jpg +0 -0
- package/skills/hallmark/references/themes/atelier.md +98 -0
- package/skills/hallmark/references/themes/bloom.jpg +0 -0
- package/skills/hallmark/references/themes/bloom.md +102 -0
- package/skills/hallmark/references/themes/blueprint.jpg +0 -0
- package/skills/hallmark/references/themes/blueprint.md +103 -0
- package/skills/hallmark/references/themes/broadside.jpg +0 -0
- package/skills/hallmark/references/themes/broadside.md +108 -0
- package/skills/hallmark/references/themes/brutal.jpg +0 -0
- package/skills/hallmark/references/themes/brutal.md +95 -0
- package/skills/hallmark/references/themes/carnival.jpg +0 -0
- package/skills/hallmark/references/themes/carnival.md +104 -0
- package/skills/hallmark/references/themes/cobalt.jpg +0 -0
- package/skills/hallmark/references/themes/cobalt.md +101 -0
- package/skills/hallmark/references/themes/console.jpg +0 -0
- package/skills/hallmark/references/themes/console.md +99 -0
- package/skills/hallmark/references/themes/coral.jpg +0 -0
- package/skills/hallmark/references/themes/coral.md +102 -0
- package/skills/hallmark/references/themes/darkroom.jpg +0 -0
- package/skills/hallmark/references/themes/darkroom.md +99 -0
- package/skills/hallmark/references/themes/dose.jpg +0 -0
- package/skills/hallmark/references/themes/dose.md +98 -0
- package/skills/hallmark/references/themes/dusk.jpg +0 -0
- package/skills/hallmark/references/themes/dusk.md +105 -0
- package/skills/hallmark/references/themes/editorial.jpg +0 -0
- package/skills/hallmark/references/themes/editorial.md +97 -0
- package/skills/hallmark/references/themes/formwork.jpg +0 -0
- package/skills/hallmark/references/themes/formwork.md +107 -0
- package/skills/hallmark/references/themes/furrow.jpg +0 -0
- package/skills/hallmark/references/themes/furrow.md +98 -0
- package/skills/hallmark/references/themes/garden.jpg +0 -0
- package/skills/hallmark/references/themes/garden.md +97 -0
- package/skills/hallmark/references/themes/grid.jpg +0 -0
- package/skills/hallmark/references/themes/grid.md +101 -0
- package/skills/hallmark/references/themes/halftone.jpg +0 -0
- package/skills/hallmark/references/themes/halftone.md +106 -0
- package/skills/hallmark/references/themes/hedgerow.jpg +0 -0
- package/skills/hallmark/references/themes/hedgerow.md +104 -0
- package/skills/hallmark/references/themes/hum.jpg +0 -0
- package/skills/hallmark/references/themes/hum.md +99 -0
- package/skills/hallmark/references/themes/index.json +2191 -0
- package/skills/hallmark/references/themes/ink.jpg +0 -0
- package/skills/hallmark/references/themes/ink.md +106 -0
- package/skills/hallmark/references/themes/kiln.jpg +0 -0
- package/skills/hallmark/references/themes/kiln.md +108 -0
- package/skills/hallmark/references/themes/loom.jpg +0 -0
- package/skills/hallmark/references/themes/loom.md +106 -0
- package/skills/hallmark/references/themes/lumen.jpg +0 -0
- package/skills/hallmark/references/themes/lumen.md +103 -0
- package/skills/hallmark/references/themes/manifesto.jpg +0 -0
- package/skills/hallmark/references/themes/manifesto.md +101 -0
- package/skills/hallmark/references/themes/midnight.jpg +0 -0
- package/skills/hallmark/references/themes/midnight.md +97 -0
- package/skills/hallmark/references/themes/newsprint.jpg +0 -0
- package/skills/hallmark/references/themes/newsprint.md +102 -0
- package/skills/hallmark/references/themes/overprint.jpg +0 -0
- package/skills/hallmark/references/themes/overprint.md +101 -0
- package/skills/hallmark/references/themes/pasteup.jpg +0 -0
- package/skills/hallmark/references/themes/pasteup.md +100 -0
- package/skills/hallmark/references/themes/piste.jpg +0 -0
- package/skills/hallmark/references/themes/piste.md +99 -0
- package/skills/hallmark/references/themes/ribbon.jpg +0 -0
- package/skills/hallmark/references/themes/ribbon.md +106 -0
- package/skills/hallmark/references/themes/rim.jpg +0 -0
- package/skills/hallmark/references/themes/rim.md +96 -0
- package/skills/hallmark/references/themes/riso.jpg +0 -0
- package/skills/hallmark/references/themes/riso.md +98 -0
- package/skills/hallmark/references/themes/solstice.jpg +0 -0
- package/skills/hallmark/references/themes/solstice.md +104 -0
- package/skills/hallmark/references/themes/specimen.jpg +0 -0
- package/skills/hallmark/references/themes/specimen.md +100 -0
- package/skills/hallmark/references/themes/spore.jpg +0 -0
- package/skills/hallmark/references/themes/spore.md +104 -0
- package/skills/hallmark/references/themes/sport.jpg +0 -0
- package/skills/hallmark/references/themes/sport.md +101 -0
- package/skills/hallmark/references/themes/squeeze.jpg +0 -0
- package/skills/hallmark/references/themes/squeeze.md +99 -0
- package/skills/hallmark/references/themes/sticker.jpg +0 -0
- package/skills/hallmark/references/themes/sticker.md +106 -0
- package/skills/hallmark/references/themes/studio.jpg +0 -0
- package/skills/hallmark/references/themes/studio.md +99 -0
- package/skills/hallmark/references/themes/terminal.jpg +0 -0
- package/skills/hallmark/references/themes/terminal.md +96 -0
- package/skills/hallmark/references/themes/terrazzo.jpg +0 -0
- package/skills/hallmark/references/themes/terrazzo.md +106 -0
- package/skills/hallmark/references/themes/ultraviolet.jpg +0 -0
- package/skills/hallmark/references/themes/ultraviolet.md +106 -0
- package/skills/hallmark/references/themes/vellum.jpg +0 -0
- package/skills/hallmark/references/themes/vellum.md +105 -0
- package/skills/hallmark/references/themes/wayfind.jpg +0 -0
- package/skills/hallmark/references/themes/wayfind.md +105 -0
- package/skills/hallmark/references/themes/werkstatt.jpg +0 -0
- package/skills/hallmark/references/themes/werkstatt.md +105 -0
- package/skills/hallmark/scripts/capture.mjs +125 -0
- package/skills/hallmark/scripts/fixtures/exemplars/atmospheric.html +324 -0
- package/skills/hallmark/scripts/fixtures/exemplars/editorial.html +363 -0
- package/skills/hallmark/scripts/fixtures/exemplars/modern-minimal.html +527 -0
- package/skills/hallmark/scripts/fixtures/exemplars/playful.html +353 -0
- package/skills/hallmark/scripts/fixtures/eyebrow-fail/index.html +118 -0
- package/skills/hallmark/scripts/fixtures/eyebrow-pass/index.html +137 -0
- package/skills/hallmark/scripts/fixtures/kept/after.html +27 -0
- package/skills/hallmark/scripts/fixtures/kept/before.html +26 -0
- package/skills/hallmark/scripts/fixtures/slopped.html +145 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/Feature.vue +14 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/Hero.tsx +33 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/index.html +74 -0
- package/skills/hallmark/scripts/fixtures/tailwind-fail/style.css +6 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/Hero.tsx +33 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/index.html +57 -0
- package/skills/hallmark/scripts/fixtures/tailwind-pass/style.css +15 -0
- package/skills/hallmark/scripts/fixtures/waiver/index.html +54 -0
- package/skills/hallmark/scripts/imagegen.mjs +85 -0
- package/skills/hallmark/scripts/install-hook.mjs +70 -0
- package/skills/hallmark/scripts/install.mjs +141 -0
- package/skills/hallmark/scripts/lint-hook.mjs +49 -0
- package/skills/hallmark/scripts/photos.json +1 -0
- package/skills/hallmark/scripts/picture.mjs +71 -0
- package/skills/hallmark/scripts/refcheck.mjs +352 -0
- package/skills/hallmark/scripts/sloplint-render.mjs +1252 -0
- package/skills/hallmark/scripts/sloplint.mjs +4422 -0
- package/skills/hallmark/scripts/theme.mjs +650 -0
- package/skills/harness/SKILL.md +17 -8
- package/skills/i-have-adhd/SKILL.md +32 -12
- package/skills/no-ai-slop/SKILL.md +15 -1
- package/skills/plan-add/SKILL.md +38 -27
- package/skills/plan-status/SKILL.md +13 -7
- package/skills/plan-sync/SKILL.md +18 -12
- package/skills/pm-frameworks/SKILL.md +19 -10
- package/skills/pm-frameworks/SOURCE +7 -5
- package/skills/ponytail/SKILL.md +19 -14
- package/skills/product-analysis/SKILL.md +22 -18
- package/skills/product-flow/SKILL.md +14 -9
- package/skills/research/SKILL.md +97 -48
- package/skills/rl-env/SKILL.md +25 -13
- package/skills/rl-env/SOURCE +8 -6
- package/skills/tezgah-contract/SKILL.md +65 -47
- package/statusline.py +20 -9
- package/workflows/graph-review.js +14 -2
- package/bin/tezgah-skill.py +0 -59
- /package/skills/ai-research/0-autoresearch-skill/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/litgpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/mamba/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/nanogpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/rwkv/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/01-model-architecture/torchtitan/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/02-tokenization/huggingface-tokenizers/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/02-tokenization/sentencepiece/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/axolotl/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/llama-factory/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/peft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/03-fine-tuning/unsloth/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/nnsight/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/pyvene/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/saelens/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/05-data-processing/nemo-curator/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/05-data-processing/ray-data/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/grpo-rl-training/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/miles/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/openrlhf/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/simpo/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/slime/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/torchforge/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/trl-fine-tuning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/06-post-training/verl/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/constitutional-ai/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/llamaguard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/nemo-guardrails/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/07-safety-alignment/prompt-guard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/accelerate/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/deepspeed/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/megatron-core/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/pytorch-fsdp2/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/pytorch-lightning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/08-distributed-training/ray-train/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/lambda-labs/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/modal/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/09-infrastructure/skypilot/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/awq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/bitsandbytes/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/flash-attention/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/gguf/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/gptq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/hqq/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/10-optimization/ml-training-recipes/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/lm-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/11-evaluation/nemo-evaluator/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/llama-cpp/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/sglang/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/tensorrt-llm/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/12-inference-serving/vllm/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/mlflow/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/swanlab/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/tensorboard/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/13-mlops/weights-and-biases/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/a-evolve/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/autogpt/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/crewai/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/langchain/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/14-agents/llamaindex/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/chroma/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/faiss/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/pinecone/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/qdrant/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/15-rag/sentence-transformers/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/dspy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/guidance/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/instructor/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/16-prompt-engineering/outlines/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/17-observability/langsmith/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/17-observability/phoenix/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/audiocraft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/blip-2/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/clip/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/cosmos-policy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/llava/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/openpi/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/openvla-oft/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/segment-anything/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/stable-diffusion/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/18-multimodal/whisper/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/knowledge-distillation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/long-context/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/model-merging/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/model-pruning/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/moe-training/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/19-emerging-techniques/speculative-decoding/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/academic-plotting/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/21-research-ideation/creative-thinking-for-research/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/compiler/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/research-manager/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/colour-independence/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/flexible-typography/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/information-density/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/preference-audit/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/responsive-review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/simplified-views/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/specify/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/assess-load/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/plain-language-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/simplify/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/design-research/skills/behavioural-analytics/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/design-research/skills/qual-quant-triangulation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/audit/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/design-flow/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/feedback-and-status/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/keyboard-review/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/multi-modal-input/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/touch-target-design/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/inclusive-interaction/skills/voice-interaction/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-affordance/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-brand-consistency/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-color/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-composition/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-information-density/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-typography/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/pm-frameworks/intended-vs-implemented/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/pm-frameworks/opportunity-solution-tree/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-nemo-gym-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-openenv-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-ors-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/generate-verifiers-env/{SKILL.md → ENTRY.md} +0 -0
- /package/skills/rl-env/rl-env-from-description/{SKILL.md → ENTRY.md} +0 -0
package/hooks/tezgah_agents.py
CHANGED
|
@@ -89,9 +89,11 @@ EMPTY_IS_NOT_PROOF = (
|
|
|
89
89
|
# The task class each generated specialist is for, in the order the steering
|
|
90
90
|
# line names them. The orchestrator is not here: it is a primary agent, not one
|
|
91
91
|
# the main thread delegates to.
|
|
92
|
-
STEER = (("mechanical edit (tier from
|
|
92
|
+
STEER = (("mechanical edit (tier from `~/.config/tezgah/bin/tezgah-route`)", "tezgah-cheap"),
|
|
93
93
|
("bounded code or tests", "tezgah-standard"),
|
|
94
|
-
("design, invariants, unknown-cause debugging", "tezgah-frontier"),
|
|
94
|
+
("software design, invariants, unknown-cause debugging", "tezgah-frontier"),
|
|
95
|
+
("UI/screen/component build or redesign (brief loads design-contract)",
|
|
96
|
+
"tezgah-standard"),
|
|
95
97
|
("review of a diff", "tezgah-reviewer"),
|
|
96
98
|
("running the impacted checks", "tezgah-tester"),
|
|
97
99
|
("docs and path:line citations", "tezgah-docs"),
|
|
@@ -231,13 +233,27 @@ def _reviewer_body(host):
|
|
|
231
233
|
"security, tests and performance) or per file group: when your brief\n"
|
|
232
234
|
"names a dimension or files, review only those - a sibling owns the rest.\n"
|
|
233
235
|
"Round two reads only the delta since the sha round one recorded\n"
|
|
234
|
-
"(
|
|
235
|
-
"callers of the symbols that delta touches
|
|
236
|
+
"(`~/.config/tezgah/bin/tezgah-task review` prints it), plus the\n"
|
|
237
|
+
"round-one hunks and direct callers of the symbols that delta touches,\n"
|
|
238
|
+
"and marks every round-one\n"
|
|
236
239
|
"finding closed or open: re-reading the whole diff re-reports what was\n"
|
|
237
240
|
"already triaged. Test results are input, not a task - read the author's\n"
|
|
238
241
|
"output file; do not run the suite, and run at most one `-k` test when a\n"
|
|
239
242
|
"specific accusation needs it. The same defect family confirmed in both\n"
|
|
240
243
|
"rounds is a sign the design needs a pivot, not another patch.\n\n"
|
|
244
|
+
"When the brief carries an OCR rule group, its rule text is the checklist\n"
|
|
245
|
+
"for those files: account for every listed file as reviewed or skipped\n"
|
|
246
|
+
"with a reason, and still apply everything above - OCR output is input,\n"
|
|
247
|
+
"never a verdict.\n\n"
|
|
248
|
+
"Plan readiness. When the target is a plan file\n"
|
|
249
|
+
"(`.tezgah/plans/open/NNN-*.md`) rather than a diff, review whether it\n"
|
|
250
|
+
"can be built without a question. First restate each section's intent\n"
|
|
251
|
+
"in one sentence of your own; a section you cannot restate lacks\n"
|
|
252
|
+
"context, which is a major finding. Then check that every choice the\n"
|
|
253
|
+
"build needs is made in the plan - schema, API path, dependency,\n"
|
|
254
|
+
"edge-case handling, the files to change; a choice left to the\n"
|
|
255
|
+
"implementer is a major finding. A file the plan will create is not a\n"
|
|
256
|
+
"missing reference. Classify and report exactly as for a diff.\n\n"
|
|
241
257
|
"%s" % (_graph_howto(host), _blast_radius(host), EMPTY_IS_NOT_PROOF,
|
|
242
258
|
decision, decision, _may_use(host)))
|
|
243
259
|
|
|
@@ -258,11 +274,26 @@ def _worker_body(tier):
|
|
|
258
274
|
"report what changed and what each check printed, verbatim. Report\n"
|
|
259
275
|
"progress, but never redefine the work. Never widen or narrow the brief's\n"
|
|
260
276
|
"scope, budget or question. If the brief cannot be met as written, say\n"
|
|
261
|
-
"so and stop rather than answering a different question.\n%s\n"
|
|
262
|
-
"
|
|
277
|
+
"so and stop rather than answering a different question.\n%s\n%s"
|
|
278
|
+
"A brief that builds or changes UI: read the `design-contract` skill\n"
|
|
279
|
+
"(and `design-library` for critique) and derive/check with\n"
|
|
280
|
+
"`~/.config/tezgah/bin/tezgah-design` before editing.\n"
|
|
281
|
+
"Never spawn subagents.\n%s" % (tier, tier, scope, OWNER_ESCALATE,
|
|
282
|
+
WORKER_OUTPUT))
|
|
263
283
|
return body
|
|
264
284
|
|
|
265
285
|
|
|
286
|
+
# A question only the owner can answer climbs past every tier to the user: a
|
|
287
|
+
# worker that settles it itself, frontier included, decided for the owner
|
|
288
|
+
# (plan 136: a line ran under a hidden dir and wrote `chosen:` with no owner
|
|
289
|
+
# choice). One text on every tier.
|
|
290
|
+
OWNER_ESCALATE = ("A question only the owner can answer - choosing a variant or option a\n"
|
|
291
|
+
"research, analysis or review recommends; a way around a tezgah\n"
|
|
292
|
+
"refusal; deciding about another session's work (its line, plan or\n"
|
|
293
|
+
"branch) - is never yours to decide, on any tier: stop and answer\n"
|
|
294
|
+
"`ESCALATE: owner` with the options and a recommended default.\n")
|
|
295
|
+
|
|
296
|
+
|
|
266
297
|
# The report a consumer reads: the orchestrator re-briefs a report missing one
|
|
267
298
|
# of these fields (_orch_body), so only a role with a reader gets them. One
|
|
268
299
|
# text on every host, since a worker body ignores its host.
|
|
@@ -272,7 +303,8 @@ WORKER_OUTPUT = ("End the report, after any other shape asked for, with `Output
|
|
|
272
303
|
"- commit: the sha\n"
|
|
273
304
|
"- checks: each command, its exit code and the last lines of its\n"
|
|
274
305
|
" output file, verbatim\n"
|
|
275
|
-
"- escalate: the `ESCALATE:` reason (
|
|
306
|
+
"- escalate: the `ESCALATE:` reason (on tezgah-frontier only\n"
|
|
307
|
+
" `ESCALATE: owner`, else `none`)")
|
|
276
308
|
|
|
277
309
|
|
|
278
310
|
# The specialists beside the tier workers: name -> (what it does, the skills it
|
|
@@ -330,19 +362,22 @@ SPECIALISTS = {
|
|
|
330
362
|
"shell and browser/device tools; no source edits",
|
|
331
363
|
"Read the running app, never only its source: a UI claim inferred from\n"
|
|
332
364
|
"code is not evidence. Measure against `.tezgah/design-contract.md` when\n"
|
|
333
|
-
"it exists (
|
|
334
|
-
"breakpoint and state it came from and a 0-4 severity
|
|
335
|
-
"do not edit source files."),
|
|
365
|
+
"it exists (`~/.config/tezgah/bin/tezgah-design check`). Every finding\n"
|
|
366
|
+
"names the screen, breakpoint and state it came from and a 0-4 severity.\n"
|
|
367
|
+
"Report findings; do not edit source files."),
|
|
336
368
|
"tezgah-researcher": (
|
|
337
369
|
"Runs one research line through OpenResearch: hypotheses, experiments, "
|
|
338
370
|
"literature, a report - the protocol frozen before the run.",
|
|
339
371
|
("research", "ai-research"),
|
|
340
|
-
"shell for `orx` and
|
|
372
|
+
"shell for `orx` and `~/.config/tezgah/bin/tezgah-research`; writes only "
|
|
373
|
+
"under .tezgah/research",
|
|
341
374
|
"Load the OpenResearch manual first (`orx skill`) and follow its\n"
|
|
342
375
|
"experiment-tree rules. Work inside the one line the brief names; never\n"
|
|
343
|
-
"open a second line while one is open
|
|
376
|
+
"open a second line while one is open\n"
|
|
377
|
+
"(`~/.config/tezgah/bin/tezgah-research status`). Freeze\n"
|
|
344
378
|
"the protocol and the criteria before any run; a correction after a run\n"
|
|
345
|
-
"goes in `amendments.md`. Run
|
|
379
|
+
"goes in `amendments.md`. Run `~/.config/tezgah/bin/tezgah-research check`\n"
|
|
380
|
+
"before reporting.\n"
|
|
346
381
|
"If `orx` is not installed, say so and stop."),
|
|
347
382
|
}
|
|
348
383
|
|
|
@@ -351,7 +386,7 @@ def _specialist_desc(name):
|
|
|
351
386
|
what, skills, tools, _role = SPECIALISTS[name]
|
|
352
387
|
named = ", ".join(s + (" (host-installed)" if s in HOST_SKILLS else "")
|
|
353
388
|
for s in skills)
|
|
354
|
-
return "%s Skills: %s. Tier: %s (tezgah-route). Tools: %s." % (
|
|
389
|
+
return "%s Skills: %s. Tier: %s (~/.config/tezgah/bin/tezgah-route). Tools: %s." % (
|
|
355
390
|
what, named or "none", tm.AGENT_SLOT[name], tools)
|
|
356
391
|
|
|
357
392
|
|
|
@@ -386,12 +421,13 @@ ROLES = (
|
|
|
386
421
|
("tezgah-cheap",
|
|
387
422
|
"Mechanical, fully specified edits on the cheapest model tier: renames, "
|
|
388
423
|
"fixtures, formatting, version bumps, commit messages, a listed migration. "
|
|
389
|
-
"Chosen by
|
|
424
|
+
"Chosen by `~/.config/tezgah/bin/tezgah-route`; answers ESCALATE when the "
|
|
425
|
+
"work needs judgement.",
|
|
390
426
|
lambda infra: True, _worker_body("cheap"), False),
|
|
391
427
|
("tezgah-standard",
|
|
392
428
|
"Bounded code, tests, search-and-summarise or a small review on the standard "
|
|
393
|
-
"model tier. Chosen by
|
|
394
|
-
"judgement above it.",
|
|
429
|
+
"model tier. Chosen by `~/.config/tezgah/bin/tezgah-route`; answers ESCALATE "
|
|
430
|
+
"when the work needs judgement above it.",
|
|
395
431
|
lambda infra: True, _worker_body("standard"), False),
|
|
396
432
|
("tezgah-frontier",
|
|
397
433
|
"Design, stored-data or ordering invariants, security-sensitive code, "
|
|
@@ -447,26 +483,30 @@ def _orch_body(names):
|
|
|
447
483
|
"on its slice id. Never `wait` while a ready step exists. Once every\n"
|
|
448
484
|
"open item is blocked on a running slice, `wait` or end the turn - the\n"
|
|
449
485
|
"host wakes you on the result. You integrate the branches in the order\n"
|
|
450
|
-
"
|
|
451
|
-
"and the citation baseline. The per-turn\n"
|
|
486
|
+
"`~/.config/tezgah/bin/tezgah-task slice merge-plan` prints, and own\n"
|
|
487
|
+
"CHANGELOG.md, MANIFEST and the citation baseline. The per-turn\n"
|
|
452
488
|
"checks of what changed still run in the turn, in the background; only\n"
|
|
453
489
|
"the heavy tier (full suite, neuter, e2e) is joined at merge.\n"
|
|
454
490
|
"A slice commits `wip: <step>` after each step. A stopped slice is\n"
|
|
455
|
-
"resumed (
|
|
456
|
-
"silently absorbed inline; run
|
|
491
|
+
"resumed (`~/.config/tezgah/bin/tezgah-task slice resume <id>`) or\n"
|
|
492
|
+
"re-dispatched, never silently absorbed inline; run\n"
|
|
493
|
+
"`~/.config/tezgah/bin/tezgah-task slice reconcile --prune`\n"
|
|
457
494
|
"before the turn that merged slices ends.\n\n"
|
|
458
495
|
"Route reviews to tezgah-reviewer, with the changed files and symbols in\n"
|
|
459
496
|
"the brief: where it has no shell it cannot run `git diff` itself. Checks\n"
|
|
460
497
|
"go to tezgah-tester, docs and citations to tezgah-docs, a security review\n"
|
|
461
498
|
"to tezgah-security, a running app to tezgah-ui, a research line to\n"
|
|
462
499
|
"tezgah-researcher. Brief a code-discovery task to a tier worker with the\n"
|
|
463
|
-
"codegraph tools; a second opinion (
|
|
464
|
-
"thread. Other work goes to the tier worker\n"
|
|
465
|
-
"
|
|
466
|
-
"tezgah-frontier). A report missing an
|
|
500
|
+
"codegraph tools; a second opinion (`~/.config/tezgah/bin/consult`) stays\n"
|
|
501
|
+
"with the main thread. Other work goes to the tier worker\n"
|
|
502
|
+
"`~/.config/tezgah/bin/tezgah-route \"<brief>\"` names (tezgah-cheap,\n"
|
|
503
|
+
"tezgah-standard, tezgah-frontier). A report missing an\n"
|
|
504
|
+
"`Output to orchestrator` field,\n"
|
|
467
505
|
"or an ESCALATE, gets one narrower re-brief of the same role naming the\n"
|
|
468
506
|
"missing field or the escalated judgement; only a second miss is\n"
|
|
469
507
|
"restarted on tezgah-frontier with the original brief, never continued.\n"
|
|
508
|
+
"An `ESCALATE: owner` is neither: its options and default go to the user\n"
|
|
509
|
+
"in the approval batch, and the orchestrator never answers it itself.\n"
|
|
470
510
|
"Never delegate a task a specialist is not\n"
|
|
471
511
|
"listed for, and never let a subagent spawn its own subagents. Verify each\n"
|
|
472
512
|
"returned claim against the code before acting." % (listed, say()["blocker_tokens"]))
|
package/hooks/tezgah_apps.py
CHANGED
|
@@ -127,6 +127,10 @@ def _probe_orx():
|
|
|
127
127
|
return _tp("orx_bin")()
|
|
128
128
|
|
|
129
129
|
|
|
130
|
+
def _probe_ocr():
|
|
131
|
+
return _tp("ocr_bin")()
|
|
132
|
+
|
|
133
|
+
|
|
130
134
|
# The fetch-and-convert step of an embedding row, run by the installer as its
|
|
131
135
|
# `cmd`, and the probe that answers whether the pinned file is in place.
|
|
132
136
|
_EMBED = os.path.join(os.path.dirname(os.path.abspath(__file__)), "tezgah_embed.py")
|
|
@@ -209,6 +213,20 @@ REGISTRY = (
|
|
|
209
213
|
"cmd": ["sh", "-c",
|
|
210
214
|
"curl -LsSf https://openresearch.sh/install.sh | sh"],
|
|
211
215
|
"why": "research routing (OpenResearch)"}},
|
|
216
|
+
# Opt-in, not a server: open-code-review's deterministic review spec
|
|
217
|
+
# (`ocr delegate preview|rule`, no model call) for the reviewer brief, and
|
|
218
|
+
# on omp its own loop on omp's model (bin/tezgah-ocr-review). Plan 125.
|
|
219
|
+
{"id": "ocr",
|
|
220
|
+
"name": "ocr",
|
|
221
|
+
"why": "review spec: file selection and per-file rules (open-code-review)",
|
|
222
|
+
"command": None,
|
|
223
|
+
"env": None,
|
|
224
|
+
"default": False,
|
|
225
|
+
"dep": {"name": "ocr", "probe": _probe_ocr, "needs": ("npm",),
|
|
226
|
+
# 1.13.2 is the release under 375f64c (the vendored prompts' commit);
|
|
227
|
+
# its prompts, delegate and rules are identical to 375f64c's
|
|
228
|
+
"cmd": ["npm", "install", "-g", "@alibaba-group/open-code-review@1.13.2"],
|
|
229
|
+
"why": "the review spec in the reviewer brief"}},
|
|
212
230
|
# Opt-in, not servers: a static embedding model fused with BM25 for the
|
|
213
231
|
# per-turn lessons and the docs fallback (hooks/tezgah_embed.py). Enabling
|
|
214
232
|
# one fetches and converts its pinned file; the first selected one is used.
|
package/hooks/tezgah_attest.py
CHANGED
|
@@ -11,8 +11,9 @@ One store, not two: the install record is the per-artifact sha file the contract
|
|
|
11
11
|
artifacts already use (`contract.sha256`, `bin/tezgah-setup::record_contract`),
|
|
12
12
|
one line per entry under a `hook:<host>:<entry>` key. An entry is one hook event's
|
|
13
13
|
tezgah-owned groups (Claude, dsh, Codex, Cursor - so a removed PreToolUse is named
|
|
14
|
-
while PostToolUse stays), opencode's plugin links, and nothing for omp
|
|
15
|
-
is compared to a fresh render, the way `rules_current`
|
|
14
|
+
while PostToolUse stays), opencode's plugin links, and nothing for omp and Amp:
|
|
15
|
+
their bridge or plugin is compared to a fresh render, the way `rules_current`
|
|
16
|
+
compares a rules file. The
|
|
16
17
|
code an entry runs is hashed only on a packaged install (a tree with no `.git`):
|
|
17
18
|
a checkout install points into a tree its owner edits on purpose. A hook file
|
|
18
19
|
any user can write (0666) is drift too; group write is left alone, because a
|
|
@@ -43,10 +44,22 @@ CODE_TARGETS = {
|
|
|
43
44
|
"cursor": (os.path.join("hosts", "cursor", "hook.py"),),
|
|
44
45
|
"opencode": (os.path.join("hosts", "opencode", "plugins", "tezgah.js"),),
|
|
45
46
|
"omp": (os.path.join("hosts", "omp", "hook.py"),),
|
|
47
|
+
"qwen": (os.path.join("hosts", "qwen", "hook.py"),),
|
|
48
|
+
"droid": (os.path.join("hosts", "droid", "hook.py"),),
|
|
49
|
+
"commandcode": (os.path.join("hosts", "commandcode", "hook.py"),),
|
|
50
|
+
"copilot": (os.path.join("hosts", "copilot", "hook.py"),),
|
|
51
|
+
"gemini": (os.path.join("hosts", "gemini", "hook.py"),),
|
|
52
|
+
"antigravity": (os.path.join("hosts", "antigravity", "hook.py"),),
|
|
53
|
+
"goose": (os.path.join("hosts", "goose", "hook.py"),),
|
|
54
|
+
"amp": (os.path.join("hosts", "amp", "hook.py"),
|
|
55
|
+
os.path.join("hosts", "amp", "tezgah-plugin.ts.in")),
|
|
46
56
|
}
|
|
47
57
|
OPENCODE_DIRS = ("plugins", "plugin")
|
|
48
58
|
OMP_BRIDGE = os.path.join(tp.HOST_DIRS["omp"], "agent", "hooks", "pre",
|
|
49
59
|
"tezgah-hook.ts")
|
|
60
|
+
# The first line of every Amp plugin tezgah renders: an uninstall removes a
|
|
61
|
+
# file at AMP_PLUGIN only when it equals a fresh render or starts with this.
|
|
62
|
+
AMP_HEADER = "// tezgah: Amp plugin rendered by tezgah-setup"
|
|
50
63
|
|
|
51
64
|
|
|
52
65
|
def sha(text):
|
|
@@ -82,10 +95,15 @@ def own_groups(data, own=False):
|
|
|
82
95
|
return out
|
|
83
96
|
|
|
84
97
|
|
|
85
|
-
def _manifest(path, own):
|
|
98
|
+
def _manifest(path, own, bare=False, key=None):
|
|
99
|
+
"""`bare`: the file is keyed by event at the top, as Droid's hooks.json is;
|
|
100
|
+
`key`: the events sit under that top-level name, as Antigravity's do."""
|
|
86
101
|
try:
|
|
87
102
|
with open(path, encoding="utf-8") as fh:
|
|
88
|
-
|
|
103
|
+
data = json.load(fh)
|
|
104
|
+
if key:
|
|
105
|
+
data, bare = (data.get(key) if isinstance(data, dict) else None) or {}, True
|
|
106
|
+
return own_groups({"hooks": data} if bare else data, own)
|
|
89
107
|
except (OSError, ValueError):
|
|
90
108
|
return None
|
|
91
109
|
|
|
@@ -97,11 +115,31 @@ def omp_bridge(root=ROOT):
|
|
|
97
115
|
with open(os.path.join(root, "hosts", "omp", "tezgah-hook.ts.in"),
|
|
98
116
|
encoding="utf-8") as fh:
|
|
99
117
|
return fh.read().replace(
|
|
100
|
-
"@HOOK@", os.path.join(root, "hosts", "omp", "hook.py"))
|
|
118
|
+
"@HOOK@", js_string(os.path.join(root, "hosts", "omp", "hook.py")))
|
|
101
119
|
except OSError:
|
|
102
120
|
return ""
|
|
103
121
|
|
|
104
122
|
|
|
123
|
+
def amp_plugin(root=ROOT):
|
|
124
|
+
"""The Amp plugin as an install writes it: the template with this tree's
|
|
125
|
+
hook path, or "" when the template is unreadable. The install, the report
|
|
126
|
+
row, the live probe and the attestation all compare against this."""
|
|
127
|
+
try:
|
|
128
|
+
with open(os.path.join(root, "hosts", "amp", "tezgah-plugin.ts.in"),
|
|
129
|
+
encoding="utf-8") as fh:
|
|
130
|
+
return fh.read().replace(
|
|
131
|
+
"@HOOK@", js_string(os.path.join(root, "hosts", "amp", "hook.py")))
|
|
132
|
+
except OSError:
|
|
133
|
+
return ""
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def js_string(path):
|
|
137
|
+
"""`path` as the inside of a JS double-quoted string: a Windows checkout's
|
|
138
|
+
`\\t`, `\\u` or `\\x` would otherwise become a control character or a
|
|
139
|
+
SyntaxError, and the bridge would not load (review of plan 140)."""
|
|
140
|
+
return json.dumps(path)[1:-1]
|
|
141
|
+
|
|
142
|
+
|
|
105
143
|
def registration(host, root=ROOT):
|
|
106
144
|
"""({entry: text}, [files]) for the tezgah-owned hook entries this host has
|
|
107
145
|
on disk; the dict is None when the host's file cannot be read."""
|
|
@@ -109,9 +147,30 @@ def registration(host, root=ROOT):
|
|
|
109
147
|
path = os.path.join(root, *(("hooks",) if host == "claude"
|
|
110
148
|
else ("hosts", "dsh")), "hooks.json")
|
|
111
149
|
return _manifest(path, own=True), [path]
|
|
112
|
-
if host in ("codex", "cursor"):
|
|
113
|
-
|
|
114
|
-
|
|
150
|
+
if host in ("codex", "cursor", "qwen", "droid", "commandcode"):
|
|
151
|
+
# Qwen's and Command Code's hooks live in a shared settings.json
|
|
152
|
+
path = os.path.join(tp.HOST_DIRS[host], "settings.json"
|
|
153
|
+
if host in ("qwen", "commandcode") else "hooks.json")
|
|
154
|
+
return _manifest(path, own=False, bare=host == "droid"), [path]
|
|
155
|
+
if host == "copilot":
|
|
156
|
+
# tezgah's own file in Copilot's user hooks dir: every entry is ours
|
|
157
|
+
path = os.path.join(tp.HOST_DIRS["copilot"], "hooks", "tezgah.json")
|
|
158
|
+
return _manifest(path, own=True), [path]
|
|
159
|
+
if host == "gemini":
|
|
160
|
+
# tezgah's own extension: every entry in its hooks.json is ours
|
|
161
|
+
path = os.path.join(tp.HOST_DIRS["gemini"], "extensions", "tezgah", "hooks",
|
|
162
|
+
"hooks.json")
|
|
163
|
+
return _manifest(path, own=True), [path]
|
|
164
|
+
if host == "antigravity":
|
|
165
|
+
# the shared ~/.gemini/config/hooks.json: every entry under its
|
|
166
|
+
# top-level `tezgah` name is ours
|
|
167
|
+
path = os.path.join(os.path.dirname(tp.HOST_DIRS["antigravity"]), "config",
|
|
168
|
+
"hooks.json")
|
|
169
|
+
return _manifest(path, own=True, key="tezgah"), [path]
|
|
170
|
+
if host == "goose":
|
|
171
|
+
# tezgah's own plugin: every entry in its hooks.json is ours
|
|
172
|
+
path = os.path.join(tp.GOOSE_PLUGIN, "hooks", "hooks.json")
|
|
173
|
+
return _manifest(path, own=True), [path]
|
|
115
174
|
if host == "opencode":
|
|
116
175
|
links = (os.path.join(tp.HOST_DIRS["opencode"], d, "tezgah.js")
|
|
117
176
|
for d in OPENCODE_DIRS)
|
|
@@ -124,6 +183,12 @@ def registration(host, root=ROOT):
|
|
|
124
183
|
return {"bridge": fh.read()}, [OMP_BRIDGE]
|
|
125
184
|
except OSError:
|
|
126
185
|
return None, [OMP_BRIDGE]
|
|
186
|
+
if host == "amp":
|
|
187
|
+
try:
|
|
188
|
+
with open(tp.AMP_PLUGIN, encoding="utf-8") as fh:
|
|
189
|
+
return {"plugin": fh.read()}, [tp.AMP_PLUGIN]
|
|
190
|
+
except OSError:
|
|
191
|
+
return None, [tp.AMP_PLUGIN]
|
|
127
192
|
return None, []
|
|
128
193
|
|
|
129
194
|
|
|
@@ -148,7 +213,7 @@ def record_texts(host, root=ROOT):
|
|
|
148
213
|
"""{key: text} an install records for one host (`bin/tezgah-setup::record_hooks`)."""
|
|
149
214
|
entries, _files = registration(host, root)
|
|
150
215
|
out = {}
|
|
151
|
-
if host
|
|
216
|
+
if host not in ("omp", "amp"):
|
|
152
217
|
out.update((KEY % (host, name), text)
|
|
153
218
|
for name, text in (entries or {}).items())
|
|
154
219
|
code = code_text(host, root) if packaged(root) else None
|
|
@@ -173,10 +238,14 @@ def drift(host, root=ROOT, shas=None):
|
|
|
173
238
|
if mode & 0o002:
|
|
174
239
|
found.append("%s mode %04o" % (path, mode))
|
|
175
240
|
if entries is None:
|
|
176
|
-
|
|
241
|
+
# a host `registration` does not know names no file: say so, never IndexError
|
|
242
|
+
found.append("%s unreadable or missing" % (files[0] if files else host))
|
|
177
243
|
elif host == "omp":
|
|
178
244
|
if entries["bridge"] != omp_bridge(root):
|
|
179
245
|
found.append("omp bridge %s differs from a fresh render" % OMP_BRIDGE)
|
|
246
|
+
elif host == "amp":
|
|
247
|
+
if entries["plugin"] != amp_plugin(root):
|
|
248
|
+
found.append("amp plugin %s differs from a fresh render" % tp.AMP_PLUGIN)
|
|
180
249
|
else:
|
|
181
250
|
names = set(recorded) - {"code"}
|
|
182
251
|
if not names:
|
|
@@ -106,6 +106,10 @@ COMPONENTS = [
|
|
|
106
106
|
"skills/feature-audit/SKILL.md", "skills/product-flow/SKILL.md",
|
|
107
107
|
"hooks/tezgah_product.py"],
|
|
108
108
|
"switch": "research-off", "editable": True, "revert": "git"},
|
|
109
|
+
{"key": "design", "label": "design",
|
|
110
|
+
"files": ["hooks/tezgah_policy.py", "skills/design-contract/SKILL.md",
|
|
111
|
+
"skills/design-library/SKILL.md", "bin/tezgah-design"],
|
|
112
|
+
"switch": "design-off", "editable": True, "revert": "git"},
|
|
109
113
|
{"key": "attribution", "label": "attribution",
|
|
110
114
|
"files": ["hooks/tezgah_policy.py", "hooks/tezgah_gate.py"],
|
|
111
115
|
"switch": "none", "editable": False, "revert": "git"},
|