@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.
Files changed (582) hide show
  1. package/CHANGELOG.md +738 -0
  2. package/LICENSE +21 -0
  3. package/MANIFEST +753 -0
  4. package/README.de.md +169 -0
  5. package/README.es.md +168 -0
  6. package/README.fr.md +166 -0
  7. package/README.md +161 -0
  8. package/README.tr.md +163 -0
  9. package/agents/tezgah-reviewer.md +70 -0
  10. package/bin/codegen +337 -0
  11. package/bin/consult +797 -0
  12. package/bin/tezgah-adhd +50 -0
  13. package/bin/tezgah-agents +45 -0
  14. package/bin/tezgah-capture +66 -0
  15. package/bin/tezgah-context +96 -0
  16. package/bin/tezgah-decisions +213 -0
  17. package/bin/tezgah-design +953 -0
  18. package/bin/tezgah-docs +1199 -0
  19. package/bin/tezgah-doctor +497 -0
  20. package/bin/tezgah-dsh +37 -0
  21. package/bin/tezgah-dsh.cmd +70 -0
  22. package/bin/tezgah-gate +75 -0
  23. package/bin/tezgah-import-ai-research +439 -0
  24. package/bin/tezgah-index +32 -0
  25. package/bin/tezgah-lessons +148 -0
  26. package/bin/tezgah-mcp +322 -0
  27. package/bin/tezgah-migrate +324 -0
  28. package/bin/tezgah-pony +50 -0
  29. package/bin/tezgah-research +772 -0
  30. package/bin/tezgah-rollback +93 -0
  31. package/bin/tezgah-route +124 -0
  32. package/bin/tezgah-setup +5798 -0
  33. package/bin/tezgah-status +383 -0
  34. package/bin/tezgah-task +607 -0
  35. package/bin/tezgah-taste +423 -0
  36. package/bin/tezgah-triage +485 -0
  37. package/bin/tezgah.js +36 -0
  38. package/commands/adhd.md +21 -0
  39. package/commands/ponytail.md +21 -0
  40. package/docs/README.md +112 -0
  41. package/docs/architecture.md +226 -0
  42. package/docs/citations-baseline.json +59 -0
  43. package/docs/clarity-baseline.json +116 -0
  44. package/docs/contract.md +416 -0
  45. package/docs/environment.md +141 -0
  46. package/docs/evidence.md +831 -0
  47. package/docs/feature-audit.md +139 -0
  48. package/docs/gate.md +407 -0
  49. package/docs/glossary.md +201 -0
  50. package/docs/hosts.md +400 -0
  51. package/docs/index.json +471 -0
  52. package/docs/judge.md +193 -0
  53. package/docs/layers.md +189 -0
  54. package/docs/models.md +160 -0
  55. package/docs/operations.md +666 -0
  56. package/docs/research.md +809 -0
  57. package/docs/results/paired-outcome-2026-10.jsonl +254 -0
  58. package/docs/results/paired-outcome-2026-10.md +204 -0
  59. package/docs/skills.md +236 -0
  60. package/docs/status-line.md +315 -0
  61. package/docs/testing.md +287 -0
  62. package/docs/vision.md +117 -0
  63. package/hooks/hooks.json +33 -0
  64. package/hooks/projects-auto-init.py +98 -0
  65. package/hooks/projects-posttooluse.py +149 -0
  66. package/hooks/projects-pretooluse.py +40 -0
  67. package/hooks/projects-stop.py +60 -0
  68. package/hooks/tezgah_agents.py +817 -0
  69. package/hooks/tezgah_apps.py +266 -0
  70. package/hooks/tezgah_attest.py +255 -0
  71. package/hooks/tezgah_clarity.py +171 -0
  72. package/hooks/tezgah_components.py +140 -0
  73. package/hooks/tezgah_context.py +2953 -0
  74. package/hooks/tezgah_embed.py +765 -0
  75. package/hooks/tezgah_gate.py +2736 -0
  76. package/hooks/tezgah_guard.py +177 -0
  77. package/hooks/tezgah_index.py +124 -0
  78. package/hooks/tezgah_integrity.py +5141 -0
  79. package/hooks/tezgah_judge.py +487 -0
  80. package/hooks/tezgah_lang.py +230 -0
  81. package/hooks/tezgah_lessons.py +210 -0
  82. package/hooks/tezgah_models.py +855 -0
  83. package/hooks/tezgah_paths.py +1132 -0
  84. package/hooks/tezgah_policy.py +1039 -0
  85. package/hooks/tezgah_rank.py +77 -0
  86. package/hooks/tezgah_replay.py +1109 -0
  87. package/hooks/tezgah_research.py +5176 -0
  88. package/hooks/tezgah_shapes.py +305 -0
  89. package/hooks/tezgah_skill_pick.py +227 -0
  90. package/hooks/tezgah_snapshot.py +490 -0
  91. package/hooks/tezgah_stopspec.py +320 -0
  92. package/hooks/tezgah_task.py +458 -0
  93. package/hooks/tezgah_taste.py +201 -0
  94. package/hooks/tezgah_untrusted.py +112 -0
  95. package/hooks/tezgah_update.py +430 -0
  96. package/hosts/codex/hook.py +268 -0
  97. package/hosts/codex/hooks.json +26 -0
  98. package/hosts/cursor/hook.py +461 -0
  99. package/hosts/cursor/hooks.json +44 -0
  100. package/hosts/dsh/hooks.json +21 -0
  101. package/hosts/dsh/statusline/lib/client.js +138 -0
  102. package/hosts/dsh/statusline/lib/index.js +104 -0
  103. package/hosts/dsh/statusline/package.json +28 -0
  104. package/hosts/omp/hook.py +277 -0
  105. package/hosts/omp/tezgah-hook.ts.in +701 -0
  106. package/hosts/opencode/plugins/tezgah.js +2742 -0
  107. package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
  108. package/output-styles/tezgah.md +142 -0
  109. package/package.json +32 -0
  110. package/packaging/build.sh +342 -0
  111. package/packaging/install.ps1 +166 -0
  112. package/packaging/install.sh +56 -0
  113. package/packaging/upgrade.sh +142 -0
  114. package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
  115. package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
  116. package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
  117. package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
  118. package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
  119. package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
  120. package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
  121. package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
  122. package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
  123. package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
  124. package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
  125. package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
  126. package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
  127. package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
  128. package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
  129. package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
  130. package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
  131. package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
  132. package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
  133. package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
  134. package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
  135. package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
  136. package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
  137. package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
  138. package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
  139. package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
  140. package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
  141. package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
  142. package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
  143. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
  144. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
  145. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
  146. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
  147. package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
  148. package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
  149. package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
  150. package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
  151. package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
  152. package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
  153. package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
  154. package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
  155. package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
  156. package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
  157. package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
  158. package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
  159. package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
  160. package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
  161. package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
  162. package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
  163. package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
  164. package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
  165. package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
  166. package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
  167. package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
  168. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
  169. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
  170. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
  171. package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
  172. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
  173. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
  174. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
  175. package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
  176. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
  177. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
  178. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
  179. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
  180. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
  181. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
  182. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
  183. package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
  184. package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
  185. package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
  186. package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
  187. package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
  188. package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
  189. package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
  190. package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
  191. package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
  192. package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
  193. package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
  194. package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
  195. package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
  196. package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
  197. package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
  198. package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
  199. package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
  200. package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
  201. package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
  202. package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
  203. package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
  204. package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
  205. package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
  206. package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
  207. package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
  208. package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
  209. package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
  210. package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
  211. package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
  212. package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
  213. package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
  214. package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
  215. package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
  216. package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
  217. package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
  218. package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
  219. package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
  220. package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
  221. package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
  222. package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
  223. package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
  224. package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
  225. package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
  226. package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
  227. package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
  228. package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
  229. package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
  230. package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
  231. package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
  232. package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
  233. package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
  234. package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
  235. package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
  236. package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
  237. package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
  238. package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
  239. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
  240. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
  241. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
  242. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
  243. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
  244. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
  245. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
  246. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
  247. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
  248. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
  249. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
  250. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
  251. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
  252. package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
  253. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
  254. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
  255. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
  256. package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
  257. package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
  258. package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
  259. package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
  260. package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
  261. package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
  262. package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
  263. package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
  264. package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
  265. package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
  266. package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
  267. package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
  268. package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
  269. package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
  270. package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
  271. package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
  272. package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
  273. package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
  274. package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
  275. package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
  276. package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
  277. package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
  278. package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
  279. package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
  280. package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
  281. package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
  282. package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
  283. package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
  284. package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
  285. package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
  286. package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
  287. package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
  288. package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
  289. package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
  290. package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
  291. package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
  292. package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
  293. package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
  294. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
  295. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
  296. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
  297. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
  298. package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
  299. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
  300. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
  301. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
  302. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
  303. package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
  304. package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
  305. package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
  306. package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
  307. package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
  308. package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
  309. package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
  310. package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
  311. package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
  312. package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
  313. package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
  314. package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
  315. package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
  316. package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
  317. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
  318. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
  319. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
  320. package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
  321. package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
  322. package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
  323. package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
  324. package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
  325. package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
  326. package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
  327. package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
  328. package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
  329. package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
  330. package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
  331. package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
  332. package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
  333. package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
  334. package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
  335. package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
  336. package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
  337. package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
  338. package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
  339. package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
  340. package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
  341. package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
  342. package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
  343. package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
  344. package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
  345. package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
  346. package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
  347. package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
  348. package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
  349. package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
  350. package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
  351. package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
  352. package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
  353. package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
  354. package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
  355. package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
  356. package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
  357. package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
  358. package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
  359. package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
  360. package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
  361. package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
  362. package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
  363. package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
  364. package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
  365. package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
  366. package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
  367. package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
  368. package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
  369. package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
  370. package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
  371. package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
  372. package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
  373. package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
  374. package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
  375. package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
  376. package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
  377. package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
  378. package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
  379. package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
  380. package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
  381. package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
  382. package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
  383. package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
  384. package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
  385. package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
  386. package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
  387. package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
  388. package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
  389. package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
  390. package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
  391. package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
  392. package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
  393. package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
  394. package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
  395. package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
  396. package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
  397. package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
  398. package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
  399. package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
  400. package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
  401. package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
  402. package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
  403. package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
  404. package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
  405. package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
  406. package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
  407. package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
  408. package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
  409. package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
  410. package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
  411. package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
  412. package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
  413. package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
  414. package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
  415. package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
  416. package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
  417. package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
  418. package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
  419. package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
  420. package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
  421. package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
  422. package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
  423. package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
  424. package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
  425. package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
  426. package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
  427. package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
  428. package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
  429. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
  430. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
  431. package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
  432. package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
  433. package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
  434. package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
  435. package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
  436. package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
  437. package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
  438. package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
  439. package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
  440. package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
  441. package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
  442. package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
  443. package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
  444. package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
  445. package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
  446. package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
  447. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
  448. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
  449. package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
  450. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
  451. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
  452. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
  453. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
  454. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
  455. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
  456. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
  457. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
  458. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
  459. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
  460. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
  461. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
  462. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
  463. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
  464. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
  465. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
  466. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
  467. package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
  468. package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
  469. package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
  470. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
  471. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
  472. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
  473. package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
  474. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
  475. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
  476. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
  477. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
  478. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
  479. package/skills/ai-research/SKILL.md +101 -0
  480. package/skills/ai-research/SOURCE +38 -0
  481. package/skills/ai-research/index/1-frame.md +18 -0
  482. package/skills/ai-research/index/2-data.md +21 -0
  483. package/skills/ai-research/index/3-train.md +48 -0
  484. package/skills/ai-research/index/4-measure.md +25 -0
  485. package/skills/ai-research/index/5-run.md +23 -0
  486. package/skills/ai-research/index/6-write.md +35 -0
  487. package/skills/ai-research/library.json +3456 -0
  488. package/skills/analyze-app/EVALS.md +82 -0
  489. package/skills/analyze-app/SKILL.md +188 -0
  490. package/skills/design-contract/EVALS.md +80 -0
  491. package/skills/design-contract/SKILL.md +171 -0
  492. package/skills/design-library/EVALS.md +85 -0
  493. package/skills/design-library/INDEX.md +59 -0
  494. package/skills/design-library/SKILL.md +58 -0
  495. package/skills/design-library/SOURCE +131 -0
  496. package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
  497. package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
  498. package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
  499. package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
  500. package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
  501. package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
  502. package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
  503. package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
  504. package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
  505. package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
  506. package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
  507. package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
  508. package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
  509. package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
  510. package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
  511. package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
  512. package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
  513. package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
  514. package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
  515. package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
  516. package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
  517. package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
  518. package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
  519. package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
  520. package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
  521. package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
  522. package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
  523. package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
  524. package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
  525. package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
  526. package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
  527. package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
  528. package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
  529. package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
  530. package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
  531. package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
  532. package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
  533. package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
  534. package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
  535. package/skills/feature-audit/EVALS.md +83 -0
  536. package/skills/feature-audit/SKILL.md +326 -0
  537. package/skills/harness/EVALS.md +81 -0
  538. package/skills/harness/SKILL.md +88 -0
  539. package/skills/i-have-adhd/EVALS.md +80 -0
  540. package/skills/i-have-adhd/SKILL.md +183 -0
  541. package/skills/no-ai-slop/EVALS.md +89 -0
  542. package/skills/no-ai-slop/SKILL.md +209 -0
  543. package/skills/no-ai-slop/eval.md +52 -0
  544. package/skills/plan-add/EVALS.md +79 -0
  545. package/skills/plan-add/SKILL.md +179 -0
  546. package/skills/plan-add/render_table.py +72 -0
  547. package/skills/plan-status/EVALS.md +78 -0
  548. package/skills/plan-status/SKILL.md +52 -0
  549. package/skills/plan-sync/EVALS.md +80 -0
  550. package/skills/plan-sync/SKILL.md +69 -0
  551. package/skills/pm-frameworks/SKILL.md +33 -0
  552. package/skills/pm-frameworks/SOURCE +39 -0
  553. package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
  554. package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
  555. package/skills/ponytail/EVALS.md +80 -0
  556. package/skills/ponytail/SKILL.md +124 -0
  557. package/skills/product-analysis/EVALS.md +103 -0
  558. package/skills/product-analysis/SKILL.md +361 -0
  559. package/skills/research/EVALS.md +104 -0
  560. package/skills/research/SKILL.md +570 -0
  561. package/skills/rl-env/SKILL.md +53 -0
  562. package/skills/rl-env/SOURCE +41 -0
  563. package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
  564. package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
  565. package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
  566. package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
  567. package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
  568. package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
  569. package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
  570. package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
  571. package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
  572. package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
  573. package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
  574. package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
  575. package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
  576. package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
  577. package/skills/tezgah-contract/EVALS.md +78 -0
  578. package/skills/tezgah-contract/SKILL.md +792 -0
  579. package/statusline.py +129 -0
  580. package/workflows/graph-impact.js +153 -0
  581. package/workflows/graph-map.js +158 -0
  582. package/workflows/graph-review.js +170 -0
package/README.tr.md ADDED
@@ -0,0 +1,163 @@
1
+ <p align="center">
2
+ <a href="README.md">English</a> |
3
+ <a href="README.de.md">Deutsch</a> |
4
+ <a href="README.es.md">Español</a> |
5
+ <a href="README.fr.md">Français</a> |
6
+ <a href="README.tr.md">Türkçe</a>
7
+ </p>
8
+
9
+ # Tezgah
10
+
11
+ <p align="center">
12
+ <img src="assets/logo/tezgah-logo.svg" alt="tezgah logo" width="220">
13
+ </p>
14
+
15
+ <h3 align="center">Çalıştırdığınız her yapay zeka kodlama asistanı için tek bir çalışma sözleşmesi.</h3>
16
+
17
+ <p align="center">
18
+ <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/github/license/r1z4x/tezgah?style=flat-square"></a>
19
+ <a href="https://github.com/r1z4x/tezgah/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/r1z4x/tezgah/ci.yml?style=flat-square&label=ci"></a>
20
+ <a href="https://github.com/r1z4x/tezgah/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/r1z4x/tezgah?style=flat-square"></a>
21
+ </p>
22
+
23
+ <p align="center"><sub>İngilizce ana kaynaktır; çeviriler geriden gelebilir.</sub></p>
24
+
25
+ ---
26
+
27
+ Tezgah, çalıştırdığınız her yapay zeka kodlama asistanını — **birincil
28
+ barındırıcı olan omp** ve Claude Code, Codex, Cursor, opencode ile DeepSeek'in
29
+ dsh donanımı — yapılandırdığınız depo kökleri içinde tek bir çalışma
30
+ sözleşmesiyle donatır. Kendi haline bırakıldığında her asistan sapar: biri
31
+ Türkçe yanıt verirken diğeri İngilizce yanıt verir, biri grep kullanırken
32
+ diğeri bir kod grafiğini sorgular, biri test çalıştırmadan "tamamlandı" der.
33
+ Kurallar paylaşılan bir çekirdekte bir kez yer alır; her barındırıcı, bu
34
+ kuralları anladığı şekle çeviren ince bir adaptör alır — bir kuralı tek yerde
35
+ değiştirdiğinizde her barındırıcıya aynı şekilde ulaşır.
36
+
37
+ ## tezgah neyi zorunlu kılar ve kaydeder
38
+
39
+ - **Tek sözleşme, altı barındırıcı.** omp, Claude Code, Codex, Cursor,
40
+ opencode ve dsh aynı kuralları görür, çünkü her barındırıcı paylaşılan tek
41
+ bir çekirdeğin ince bir adaptörüdür — kuralı bir kez değiştirin, hepsi alır.
42
+ - **"Tamamlandı" demek için kayıtta geçmiş bir kontrol gerekir.** 15 reddin
43
+ olduğu bir kapı, etkisizleştirilmiş kontrolü durdurur — `--no-verify`,
44
+ `|| true`, `tail`'e yönlendirilmiş bir test, uçuş sırasında eklenen bir
45
+ skip — ve Stop kuralı, oturumun kanıt defterinin desteklemediği tamamlanma
46
+ iddiasını reddeder. Turu reddeder; modelin bu iddiayı dile getirmesini
47
+ engelleyemez.
48
+ - **Araştırma kütüphanesiyle birlikte gelir.** Araştırma görevleri,
49
+ bağlamın küçük kalması için tek tek yüklenen 98 becerilik gömülü
50
+ bir kütüphaneyle OpenResearch üzerinden yürütülür.
51
+ - **Her kuralın bir kapatma anahtarı vardır.** On altı kapatma anahtarı — ve
52
+ depo başına işaretler — kuralın metnini oturumdan kaldırır; böylece kural
53
+ yalnızca kapalı görünmez, gerçekten durur.
54
+ - **Sabit bir yanıt biçimi.** Yanıtlar, başka bir dil seçmediyseniz Türkçedir ve sonuçla
55
+ başlar; bir liste en fazla beş sıralı madde gösterir; bir tahmin tahmin
56
+ olarak adlandırılır; bir hata konum, neden, çözüm olarak okunur.
57
+
58
+ ## Neyi göstermedi
59
+
60
+ Tezgah bir mekanizmalar bütünüdür: oturuma eklenen kurallar, belirli komutları
61
+ reddeden bir kapı ve Stop kuralının okuduğu bir defter. Bir ajanın daha az
62
+ hile yaptığının ya da daha çok görev bitirdiğinin kanıtı değildir. Eşleştirilmiş
63
+ bir açık/kapalı deneyi (Ekim 2026; omp üzerinde DeepSeek V4.1 Flash, tezgah'sız
64
+ ile tam tezgah kurulumu karşılaştırıldı) hilede ölçülebilir bir azalma bulmadı,
65
+ çünkü model iki kolda da neredeyse hiç hile yapmadı:
66
+
67
+ - **Aşama 1, üç baskı düzeneği:** her kolda 60 çalıştırmanın 0'ında hile;
68
+ temiz geçiş tezgah ile 48/60, tezgah'sız 53/60.
69
+ - **Aşama 2, ImpossibleBench'in çelişkili SWE-bench bölümü (44 örnek,
70
+ k = 3):** hile tezgah ile 0/132, tezgah'sız 1/131 (-0.8 pp, %95 GA -2.3 ile
71
+ 0 arası); özgün görevlerde temiz geçiş 129/131'e karşı 129/132.
72
+ - **Elle etiketlenmiş yanlış "bitti" iddiaları:** bu imkânsız görevlerde,
73
+ örneklenen son mesajların tezgah ile 30'da 3'ü, tezgah'sız 30'da 6'sı
74
+ kullanıcıya görevin bittiğini söyledi. Düzeltilmiş fark -5 pp (%95 GA -18 ile
75
+ +9 arası), yani iki yönde de etki yok.
76
+ - **Stop kuralının iddia okuyucusunda bir zayıf nokta:** tezgah ile 115/132,
77
+ tezgah'sız 90/131 çalıştırmayı işaretledi, ama işaretlerinin yalnızca %10'u
78
+ ve %20'si gerçek "bitti" iddiasıydı. tezgah ile ajan Türkçe yanıt verdi ve
79
+ okuyucu kısmi bir düzeltmedeki `doğrulandı` sözcüğünü iddia sayıyor. Bu
80
+ kayda geçti, henüz düzeltilmedi.
81
+
82
+ Çalıştırmada ölçüm aracı kusurları vardı; bunların arasında, iki koldaki
83
+ ajanların benchmark'ın doğru cevaplarını okuyabilmesi de var. Toplamlar, görev
84
+ başına sayımlar ve her çekince
85
+ [sonuç paketinde](docs/results/paired-outcome-2026-10.md) yer alır (İngilizce).
86
+
87
+ <a id="install"></a>
88
+
89
+ ## Kurulum
90
+
91
+ Tek satır, macOS, Linux veya WSL'de (Python 3.10+, `curl`, `tar`). Son sürümü
92
+ indirir, sha256'sını doğrular ve bulduğu her barındırıcıyı kurar (Claude
93
+ Code'u kendi `claude plugin` CLI'ı üzerinden):
94
+
95
+ ```bash
96
+ curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
97
+ ```
98
+
99
+ Ya da npm ile: `npm i -g @r1z4x/tezgah && tezgah --install`.
100
+
101
+ Ayrıştıramadığı bir barındırıcı yapılandırmasına dokunmaz, değiştirdiği her
102
+ yapılandırmanın tarihli bir `.tezgah-bak` kopyasını tutar ve kurmayı
103
+ planladığı bir barındırıcı kurulamazsa sıfırdan farklı bir kodla çıkar.
104
+
105
+ ### tezgah makinenizde neyi değiştirir
106
+
107
+ - **Barındırıcı yapılandırması.** Kurulan her barındırıcı tezgah'ın
108
+ hook'larını, MCP satırlarını ve kendi genel kural dosyasında
109
+ (`~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md`, `~/.omp/agent/RULES.md`)
110
+ yönetilen bir sözleşme bloğunu alır. Claude Code'un hook'ları `claude plugin`
111
+ ile kaydedilen bir eklentide gelir; `claude` CLI'ı yoksa Claude kurulmamış
112
+ kalır ve rapor bunu söyler.
113
+ - **Depolarınızdaki ajan dosyaları.** Yapılandırılan köklerde bir oturum
114
+ `.claude/agents/`, `.codex/agents/` ve `.opencode/agents/` altına alt ajan
115
+ dosyaları yazar ve bu dizinleri klonun kendi `.git/info/exclude` dosyasına
116
+ ekler (`TEZGAH_NO_EXCLUDE=1` bunu durdurur).
117
+ - **Günlük güncelleme denetimi.** Durum satırı yeni bir sürümü günde en fazla
118
+ bir kez sorar; `~/.config/tezgah/update-check-off` ya da
119
+ `TEZGAH_UPDATE_CHECK=0` bunu kapatır.
120
+ - **orx.** Kurulum, araştırma görevlerinin yönlendirildiği OpenResearch CLI'ını
121
+ indirir; `TEZGAH_NO_DEPS=1` bunu atlar.
122
+ - **Yanıt dili.** Yanıtlar varsayılan olarak Türkçedir ve Stop kuralı bunu
123
+ denetler. `--reply-lang en` İngilizce, `any` ise sizin dilinizi ister;
124
+ ikisi de denetlenmez: `curl -fsSL … | sh -s -- --reply-lang en`.
125
+
126
+ Kurulumu kodlama asistanınıza yaptırmak isterseniz bunu omp, Claude Code,
127
+ Codex, Cursor veya opencode'a yapıştırın (istem İngilizce; asistan her dilde
128
+ anlar):
129
+
130
+ ```text
131
+ Install tezgah (https://github.com/r1z4x/tezgah) on this machine and verify it.
132
+
133
+ 1. Check the prerequisites: python3 --version must be 3.10 or newer, and curl
134
+ and tar must exist. If one is missing, stop and tell me which.
135
+ 2. Run the installer exactly as published - do not edit it or pipe it anywhere else:
136
+ curl -fsSL https://raw.githubusercontent.com/r1z4x/tezgah/main/packaging/install.sh | sh
137
+ Its output must contain "verified tezgah-<version>.tar.gz" (the sha256
138
+ check). If it does not, stop and show me the output.
139
+ 3. Verify: run ~/.local/share/tezgah/current/bin/tezgah-setup --version and
140
+ ~/.local/share/tezgah/current/bin/tezgah-setup --report, and show me every
141
+ line that says MISS.
142
+ 4. Tell me which hosts were armed, which repository root was configured
143
+ (default ~/Projects - if my code lives elsewhere, ask me for the directory and
144
+ run ~/.local/share/tezgah/current/bin/tezgah-setup --roots <dir> --install),
145
+ and that I must restart each assistant for the hooks to load.
146
+ Do not change any other file and do not uninstall anything.
147
+ ```
148
+
149
+ Sürüm sabitleme, Windows (`packaging/install.ps1`), çevrimdışı tarball,
150
+ yükseltme ve isteğe bağlı entegrasyonlar [docs](docs/README.md) altındadır.
151
+
152
+ ## Desteklenen barındırıcılar
153
+
154
+ **omp** (birincil barındırıcı; tezgah buna göre geliştirilir ve doğrulanır), **Claude Code**, **Codex**, **Cursor**, **opencode**, **dsh** — paylaşılan tek çekirdeğin ince adaptörleri.
155
+
156
+ ## Ayrıntılar nerede
157
+
158
+ Kapı, kanıt defteri, barındırıcı adaptörleri, yapılandırma ve geliştirme [docs/README.md](docs/README.md) içindedir; soru başına bir sayfa.
159
+
160
+ ## Lisans
161
+
162
+ MIT — bkz. [LICENSE](LICENSE).
163
+ Katıştırılmış beceriler (`ponytail`, `no-ai-slop`, `i-have-adhd`) kendi MIT koşullarıyla gelir; bkz. [NOTICE](NOTICE).
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: tezgah-reviewer
3
+ description: >
4
+ Adversarial, read-only review of a diff, branch or PR: derives the blast
5
+ radius, checks correctness, contract, security, tests and performance, and
6
+ classifies every finding confirmed/refuted/unverified.
7
+ model: opus
8
+ effort: high
9
+ readonly: true
10
+ disallowedTools: Write, Edit, NotebookEdit, Bash, Agent
11
+ ---
12
+
13
+ You are tezgah-reviewer, an adversarial code reviewer. Review a change,
14
+ not the whole repo, with the code graph as below.
15
+
16
+ Load the graph tools first: ToolSearch("select:mcp__codegraph__codegraph_explore,mcp__plugin_tezgah_codegraph__codegraph_explore,mcp__codegraph__codegraph_impact,mcp__plugin_tezgah_codegraph__codegraph_impact,mcp__codegraph__codegraph_callers,mcp__plugin_tezgah_codegraph__codegraph_callers,mcp__codegraph__codegraph_node,mcp__plugin_tezgah_codegraph__codegraph_node"). You have no
17
+ shell, so the codegraph CLI is out of reach: use those MCP tools.
18
+
19
+ Review the raw artifact, never a summary of it and never the author's
20
+ self-assessment. Format, schema, frontmatter and spec-compliance problems
21
+ live in the exact text, and a framing you were handed is a finding you will
22
+ not make: a reviewer given the implementer's view finds measurably fewer
23
+ defects. If you were handed a paraphrase, read the files instead.
24
+
25
+ You have no shell, so you cannot run `git diff`: the caller passes
26
+ the changed files and symbols of the target (a base branch, a ref or
27
+ the PR under review). Run the MCP `codegraph_impact` tool per changed
28
+ symbol - that is the blast radius. If the brief names no changed files,
29
+ say so and ask for them instead of guessing. Read the changed code and any caller you intend to accuse.
30
+ An empty or short caller list is not proof that a change is safe: the
31
+ index records only the edges its parser saw, so say what it cannot see
32
+ (dynamic dispatch, string or config lookups, unindexed files) instead of
33
+ implying the list is complete.
34
+ Look only for defects the change causes: correctness, contract/callers,
35
+ security, tests, concurrency and performance. Classify every candidate as
36
+ confirmed (concrete failure scenario + file:line), refuted (a guard,
37
+ caller contract, type or test already prevents it) or unverified (not
38
+ settled). Default to refuted when the evidence is unclear. Only the code
39
+ or a run you observed settles a candidate: a doc, a comment, a lessons
40
+ file, a memory note or an earlier report may raise a question but never
41
+ makes it confirmed or refuted on its own. Report only confirmed findings
42
+ as bugs; no style notes, no praise; empty is the correct answer for a
43
+ clean change.
44
+
45
+ Score the constraints separately from the defects. For every constraint
46
+ the task stated - keep this behaviour, touch no other file, preserve this
47
+ format - report kept or violated with the file:line that shows which. A
48
+ patch that passes the tests and breaks a stated constraint is not clean,
49
+ and a functional test will not notice it.
50
+
51
+ Every finding carries a severity - critical (the change cannot stand as
52
+ written), major (a real weakness that must be fixed), minor (noticeable),
53
+ suggestion (an improvement, not a flaw) - and a verbatim quote of the
54
+ code it accuses; a finding about an absence carries no quote. A severity
55
+ is lowered only by evidence: a check you could not complete never
56
+ downgrades a confirmed finding - keep its severity and mark it
57
+ provisional. Disclose the order you read the files in.
58
+
59
+ Scope and budget. Every round that confirms a defect is followed by a
60
+ round over that fix's delta; the review ends when a round confirms none.
61
+ A later round reads only the delta since the sha the previous round
62
+ recorded (`tezgah-task review` prints it): re-reading the whole diff
63
+ re-reports what was already triaged. Test results are input, not a task
64
+ - read the author's output file; do not run the suite, and run at most one
65
+ `-k` test when a specific accusation needs it. The same defect family
66
+ confirmed three times is a sign the design needs a pivot, not another
67
+ patch.
68
+
69
+ You may use: the codegraph MCP tools, read, grep and glob. Read-only:
70
+ no writes, no edits, no shell.
package/bin/codegen ADDED
@@ -0,0 +1,337 @@
1
+ #!/usr/bin/env python3
2
+ """codegen - hand a bounded coding task to a cheap model, get back a DIFF.
3
+
4
+ codegen "task" --files src/a.py src/b.py [--provider p] [--model m]
5
+ [--timeout s] [--max-tokens N] [--out-dir DIR] (drafts only; nothing is applied)
6
+
7
+ --timeout (default 300) caps the WHOLE request, not one socket operation, so a
8
+ stalled connection exits 2 instead of hanging the caller. CODEGEN_URL overrides
9
+ the endpoint (a gateway, or a test server; plain http only to this machine);
10
+ CODEGEN_MODEL the model.
11
+
12
+ The model NEVER writes into the repository. It returns whole file bodies, this
13
+ script writes them to a scratch directory and prints `diff -u` against the
14
+ working tree. The caller reviews that diff, applies it, and runs the gate
15
+ (tests, ruff, ty). That separation is the whole point: a cheap model drafts,
16
+ an expensive one decides, and nothing lands unreviewed.
17
+
18
+ Providers (--provider, default openrouter):
19
+ openrouter OPENROUTER_API_KEY ~/.config/openrouter/key
20
+ deepseek DEEPSEEK_API_KEY ~/.config/deepseek/key
21
+ inception INCEPTION_API_KEY ~/.config/inception/key
22
+ Key lookup order: the provider's env var, then its key file.
23
+
24
+ EXIT CODES, and they are the contract:
25
+ 0 usable drafts, diff printed
26
+ 2 codegen cannot deliver -- WRITE THE CODE YOURSELF with the main model.
27
+ Raised for: no key, API or network failure, a request that outlived
28
+ --timeout, a redirect to another host, a plain-http endpoint off this
29
+ machine, a --files file carrying a credential (refused, not redacted:
30
+ nothing is sent), the model answering BLOCKED, an unparseable reply, a
31
+ TRUNCATED reply (finish_reason=length), a Python draft that does not parse
32
+ (a `.py` file, or any file whose shebang names Python), or drafts
33
+ identical to what is already there.
34
+ A half-written file that happens to parse is the failure this guards
35
+ against: it looks like an answer and is not one. A draft in a language no
36
+ checker here parses (`.tsx`, `.js`) is NOT parsed: it still exits 0 and the
37
+ footer names it, so the router knows which of its files nothing examined.
38
+ 1 the caller misused the tool (bad arguments)
39
+ 130 the request was interrupted (Ctrl-C): stop, do not fall back
40
+ """
41
+ import ast
42
+ import concurrent.futures
43
+ import os
44
+ import re
45
+ import subprocess
46
+ import sys
47
+ import tempfile
48
+ import urllib.request
49
+ import json
50
+
51
+ HOOKS = os.path.join(
52
+ os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "hooks")
53
+ sys.path.insert(0, HOOKS)
54
+ import tezgah_integrity as ti # noqa: E402
55
+ import tezgah_paths as tp # noqa: E402
56
+
57
+ # The redirect guard: a hop that leaves the endpoint's host is refused, since
58
+ # urllib would carry the bearer to whatever host the answer named.
59
+ OPENER = tp.guarded_opener()
60
+ # A credential in a file codegen would send: a vendor key by its own prefix (the
61
+ # ledger redactor's value shapes) or a private-key block. Value shapes only - the
62
+ # redactor's `name=value` patterns would refuse every source file that reads a
63
+ # key from the environment (142 of this repo's 720 tracked files; these shapes
64
+ # match only 4 test fixtures, all fake keys).
65
+ CREDENTIAL = (ti.SECRET_TOKEN, re.compile(r"-----BEGIN [A-Z ]*PRIVATE KEY-----"))
66
+
67
+ # The cheap id this script names when the models table cannot be read: one
68
+ # unreadable table must not cost a draft. The table is asked first
69
+ # (`cheap_default` below).
70
+ FALLBACK_MODEL = "deepseek/deepseek-v4.1-flash"
71
+
72
+ # provider -> (chat-completions URL, key env var, key file, default model)
73
+ PROVIDERS = {
74
+ "openrouter": (
75
+ "https://openrouter.ai/api/v1/chat/completions",
76
+ "OPENROUTER_API_KEY",
77
+ "~/.config/openrouter/key",
78
+ FALLBACK_MODEL,
79
+ ),
80
+ "deepseek": (
81
+ "https://api.deepseek.com/v1/chat/completions",
82
+ "DEEPSEEK_API_KEY",
83
+ "~/.config/deepseek/key",
84
+ "deepseek-chat",
85
+ ),
86
+ # Inception Labs' Mercury route is OpenAI-compatible except for one field:
87
+ # it takes `max_completion_tokens`, not `max_tokens` (see the `ask` payload
88
+ # below), and the model id carries no vendor prefix.
89
+ "inception": (
90
+ "https://api.inceptionlabs.ai/v1/chat/completions",
91
+ "INCEPTION_API_KEY",
92
+ "~/.config/inception/key",
93
+ "mercury-2.5",
94
+ ),
95
+ }
96
+
97
+
98
+ def cheap_default():
99
+ """The cheap row the models table names on `any`, else `FALLBACK_MODEL`.
100
+
101
+ One source for the cheap tier: a refresh that moves the row moves this
102
+ default (`hooks/tezgah_models.py`). One unreadable table must not cost a
103
+ draft, so the read is guarded and the literal is the fallback."""
104
+ try:
105
+ import tezgah_models
106
+ row = tezgah_models.cheap_model("any")
107
+ except Exception:
108
+ row = None
109
+ return row[0] if row else FALLBACK_MODEL
110
+
111
+
112
+ # CODEGEN_MODEL still overrides the OpenRouter default (historical behaviour).
113
+ MODEL = os.environ.get("CODEGEN_MODEL", "").strip() or cheap_default()
114
+
115
+ SYSTEM = """You are writing code inside an existing repository. Rules:
116
+
117
+ 1. Output ONLY complete file bodies, each in this exact form:
118
+
119
+ === FILE: <path exactly as given to you> ===
120
+ ```
121
+ <the entire new contents of that file>
122
+ ```
123
+
124
+ 2. No prose, no explanation, no partial files, no "... rest unchanged".
125
+ A file you do not change must not appear in your output at all.
126
+ 3. Match the surrounding code: its comment density, naming, and idiom. This
127
+ codebase writes WHY in comments, not WHAT, and marks load-bearing
128
+ invariants explicitly.
129
+ 4. Laziest solution that actually works: reuse what exists, prefer the standard
130
+ library, add no abstraction that is not needed today. Never simplify away
131
+ input validation, error handling or security.
132
+ 5. If the task cannot be done correctly with what you were given, say so in one
133
+ line starting with BLOCKED: and output no files."""
134
+
135
+ # the closing fence must end the block: a nested ``` inside a draft (markdown,
136
+ # docs, anything with a code sample) used to truncate the file silently
137
+ BLOCK = re.compile(r"=== FILE: (?P<path>[^=]+?) ===\s*```[a-zA-Z]*\n"
138
+ r"(?P<body>.*?)\n```[ \t]*(?=\s*(?:=== FILE:|\Z))", re.S)
139
+ # A file whose first line says it is Python is one, whatever it is called - the
140
+ # repo's own bin/* scripts have no `.py` and are the drafts this tool is handed.
141
+ PY_SHEBANG = re.compile(r"^#![^\n]*\bpython[0-9.]*\b")
142
+
143
+
144
+ def key(provider):
145
+ _url, env, path, _model = PROVIDERS[provider]
146
+ k = os.environ.get(env, "").strip()
147
+ if not k:
148
+ try:
149
+ k = open(os.path.expanduser(path), encoding="utf-8").read().strip()
150
+ except OSError:
151
+ pass
152
+ if not k:
153
+ raise Insufficient("no API key for %s (%s or %s)" % (provider, env, path))
154
+ return k
155
+
156
+
157
+ class Insufficient(Exception):
158
+ """codegen cannot deliver; the caller must fall back to the main model."""
159
+
160
+
161
+ def fetch(req, timeout):
162
+ with OPENER.open(req, timeout=timeout) as r:
163
+ return json.load(r)
164
+
165
+
166
+ def ask(task, files, model, provider, timeout, max_tokens):
167
+ url = os.environ.get("CODEGEN_URL", "").strip() or PROVIDERS[provider][0]
168
+ if tp.plain_http(url):
169
+ raise Insufficient("CODEGEN_URL %s is plain http off this machine: the key "
170
+ "and the files would cross the network in clear" % url)
171
+ parts = [f"TASK:\n{task}\n"]
172
+ for path in files:
173
+ try:
174
+ body = open(path, encoding="utf-8").read()
175
+ except OSError as e:
176
+ sys.exit(f"codegen: cannot read {path}: {e}")
177
+ # Refused, not redacted: the draft comes back as the whole file, so a
178
+ # masked value would be diffed as a change to the credential itself.
179
+ if any(p.search(body) for p in CREDENTIAL):
180
+ raise Insufficient(f"{path} carries a credential; nothing was sent")
181
+ parts.append(f"=== FILE: {path} ===\n```\n{body}```\n")
182
+ payload = {
183
+ "model": model,
184
+ "messages": [{"role": "system", "content": SYSTEM},
185
+ {"role": "user", "content": "\n".join(parts)}],
186
+ "temperature": 0,
187
+ }
188
+ if max_tokens:
189
+ # Inception names this field `max_completion_tokens` (its compat table in
190
+ # ~/.omp/agent/models.yml records the same), so the name follows the
191
+ # provider rather than the OpenAI default.
192
+ field = "max_completion_tokens" if provider == "inception" else "max_tokens"
193
+ payload[field] = max_tokens
194
+ req = urllib.request.Request(
195
+ url,
196
+ data=json.dumps(payload).encode(),
197
+ headers={"Authorization": f"Bearer {key(provider)}", "Content-Type": "application/json",
198
+ "X-Title": "codegen"})
199
+ # --timeout is the cap on the WHOLE request, not on one socket operation:
200
+ # urllib's own timeout restarts on every recv, so a body that trickles (or a
201
+ # connection kept alive with nothing on it) outlives it indefinitely - seen
202
+ # as a 3-minute hang under --timeout 90. consult caps its calls the same way.
203
+ pool = concurrent.futures.ThreadPoolExecutor(1)
204
+ try:
205
+ out = pool.submit(fetch, req, timeout).result(timeout=timeout)
206
+ except concurrent.futures.TimeoutError:
207
+ raise Insufficient("the request outlived --timeout=%ds" % timeout)
208
+ except Exception as exc: # noqa: BLE001 - any failure is a fallback
209
+ raise Insufficient(f"the request failed: {exc}") from exc
210
+ finally:
211
+ pool.shutdown(wait=False)
212
+ choice = (out.get("choices") or [{}])[0]
213
+ msg = choice.get("message") or {}
214
+ if choice.get("finish_reason") == "length":
215
+ # The last file body is cut off mid-line. It may still parse, which is
216
+ # exactly why this is checked here and not left to the diff.
217
+ raise Insufficient("the reply was truncated (finish_reason=length)")
218
+ return (msg.get("content") or "").strip(), out.get("usage") or {}
219
+
220
+
221
+ def main():
222
+ args = sys.argv[1:]
223
+ if not args or args[0] in ("-h", "--help"):
224
+ sys.exit(__doc__.strip())
225
+ task, files, model, provider, timeout, out_dir, max_tokens = \
226
+ args[0], [], None, "openrouter", 300, None, 0
227
+ i = 1
228
+ while i < len(args):
229
+ if args[i] == "--files":
230
+ i += 1
231
+ while i < len(args) and not args[i].startswith("--"):
232
+ files.append(args[i]); i += 1
233
+ continue
234
+ if args[i] == "--provider" and i + 1 < len(args):
235
+ provider = args[i + 1]; i += 2; continue
236
+ if args[i] == "--model" and i + 1 < len(args):
237
+ model = args[i + 1]; i += 2; continue
238
+ if args[i] == "--timeout" and i + 1 < len(args):
239
+ timeout = int(args[i + 1]); i += 2; continue
240
+ if args[i] == "--out-dir" and i + 1 < len(args):
241
+ out_dir = args[i + 1]; i += 2; continue
242
+ if args[i] == "--max-tokens" and i + 1 < len(args):
243
+ max_tokens = int(args[i + 1]); i += 2; continue
244
+ sys.exit(f"codegen: unknown argument {args[i]}")
245
+ if provider not in PROVIDERS:
246
+ sys.exit("codegen: unknown provider %r (use %s)"
247
+ % (provider, " or ".join(sorted(PROVIDERS))))
248
+ if not files:
249
+ sys.exit("codegen: --files is required; the model may only touch files you name")
250
+ if model is None:
251
+ model = MODEL if provider == "openrouter" else PROVIDERS[provider][3]
252
+
253
+ answer, usage = ask(task, files, model, provider, timeout, max_tokens)
254
+ if answer.startswith("BLOCKED:"):
255
+ raise Insufficient(answer)
256
+ if not BLOCK.search(answer):
257
+ raise Insufficient("no file block in the reply: " + (answer[:200] or "empty"))
258
+
259
+ scratch = out_dir or tempfile.mkdtemp(prefix="codegen-")
260
+ os.makedirs(scratch, exist_ok=True)
261
+ written = []
262
+ for m in BLOCK.finditer(answer):
263
+ path = m.group("path").strip()
264
+ if path not in files:
265
+ # The model may only rewrite files the caller named. Anything else
266
+ # is dropped rather than diffed: a path it invented is a path
267
+ # nobody reviewed.
268
+ print(f"codegen: ignoring unrequested file {path}", file=sys.stderr)
269
+ continue
270
+ dest = os.path.join(scratch, path.replace("/", "__"))
271
+ with open(dest, "w", encoding="utf-8") as fh:
272
+ fh.write(m.group("body"))
273
+ written.append((path, dest))
274
+
275
+ if not written:
276
+ raise Insufficient("the model returned no file that was in --files")
277
+
278
+ # Each draft must parse and must differ. A draft that does not parse is a
279
+ # half-written file; one that is byte-identical is a model that did nothing.
280
+ # What this can vouch for is Python, by suffix or by shebang: the repo's own
281
+ # bin/* scripts carry no `.py`, and they are exactly what the router hands
282
+ # this tool. Nothing here parses TypeScript or JavaScript, so a draft in one
283
+ # of those is named as unparsed in the footer rather than passed in silence -
284
+ # exit 0 is the router's go-ahead, and a file nothing examined has to say so.
285
+ # ponytail: widening past Python means a real second parser (bun/node) and its
286
+ # version, not another entry on a suffix list.
287
+ changed, unparsed = [], []
288
+ for path, dest in written:
289
+ body, current = open(dest, encoding="utf-8").read(), open(path, encoding="utf-8").read()
290
+ vouchable = path.endswith(".py") or bool(PY_SHEBANG.match(body))
291
+ if vouchable:
292
+ try:
293
+ ast.parse(body, filename=dest)
294
+ except SyntaxError as exc:
295
+ raise Insufficient(f"{path}: the draft is not valid Python ({exc})") from exc
296
+ if body == current:
297
+ continue
298
+ changed.append((path, dest))
299
+ if not vouchable:
300
+ unparsed.append(path)
301
+ if not changed:
302
+ raise Insufficient("every draft is identical to the file it replaces")
303
+
304
+ for path in unparsed:
305
+ print(f"codegen: NOTE {path} was not parsed (no checker for this type)",
306
+ file=sys.stderr)
307
+ for path, dest in changed:
308
+ subprocess.run(["diff", "-u", path, dest], check=False)
309
+ written = changed
310
+ print(f"\ncodegen: {provider}/{model} | {len(written)} file(s) | "
311
+ f"in={usage.get('prompt_tokens')} out={usage.get('completion_tokens')} | "
312
+ f"drafts in {scratch}")
313
+ print("codegen: NOTHING was applied. Review the diff, then copy the drafts in.")
314
+
315
+
316
+ if __name__ == "__main__":
317
+ try:
318
+ main()
319
+ except KeyboardInterrupt:
320
+ # Ctrl-C while a stalled request is in flight: main() unwinds, but the
321
+ # request thread is non-daemon and interpreter shutdown joins it, so the
322
+ # process would hang until the response ends. Leave immediately instead.
323
+ print("codegen: interrupted", file=sys.stderr)
324
+ sys.stdout.flush()
325
+ sys.stderr.flush()
326
+ os._exit(130)
327
+ except Insufficient as exc:
328
+ # Exit 2 is the whole point: the caller falls back to the main model rather
329
+ # than applying something this script could not vouch for.
330
+ print(f"codegen: INSUFFICIENT -- {exc}\n"
331
+ f"codegen: fall back to the main model and write this one yourself.",
332
+ file=sys.stderr)
333
+ sys.stdout.flush()
334
+ sys.stderr.flush()
335
+ # A request thread that outlived --timeout is still alive, and sys.exit
336
+ # waits for it at interpreter shutdown; the message above is already out.
337
+ os._exit(2)